intelligenia / lulo
受Django启发的PHP最小ORM
v1.1
2017-01-13 16:34 UTC
Requires
- php: >=5.4.0
- adodb/adodb-php: 5.20.4
- twig/twig: 1.24.0
This package is not auto-updated.
Last update: 2024-09-26 20:25:37 UTC
README
受Django启发的PHP最小ORM。
这是什么?
这是一个基于Django ORM API的PHP小型、易于使用的ORM。
要求
PHP 5.4和由composer安装的依赖项(composer、AdoDB和Twig模板系统)。
安装
lulo已上传到packagist.org,可以使用composer轻松安装。
composer require intelligenia/lulo
文档
本地配置
在你的web服务器中创建一个名为configuration.local.php的文件,其结构应与configuration.local.example.php中定义的结构相同。
此文件必须包含如示例中所示的数据库访问凭据。
function get_db_settings(){ $db_settings = [ "server" => "<DB SERVER>", "user" => "<DB USER>", "password" => "<DB PASSWORD>", "database" => "<DATABASE>" ]; return $db_settings; }
此本地配置文件将从configuration.php
自动加载,并用于访问数据库。
API
扩展文档
示例
有一个测试模块,提供了Lulo及其查询系统的一些使用示例。
/** * Example user class for a social-network-like system. * @author Diego J. Romero López at intelligenia. * */ class User extends \lulo\models\LuloModel{ /** Model table */ const TABLE_NAME = "user"; /** Class name*/ const CLASS_NAME = __CLASS__; /** * Metainformation of the class * */ public static $META = [ // Description of the model "model_description" => "Test user", // Verbose name "verbose_name" => "test user", // Verbose name (plural) "verbose_name_plural" => "test users", // Gender of the verbose name "gender" => "m", // Order in lists (["field1"=>"ASC|DESC", "field2"=>"ASC|DESC", ...]) "order" => ["username"=>"ASC"] ]; /** * Model attributes * */ protected static $ATTRIBUTES = [ // Primary key "stack"=>["type"=>"string", "default"=>TEST_STACK, "verbose_name"=>"User dependant stack", "auto"=>true], "id" => ["type"=>"int", "verbose_name"=>"Identificador único del usuario", "auto"=>true], // Proper user fields "first_name" => ["type"=>"string", "verbose_name"=>"Name", "access"=>"rw"], "last_name" => ["type"=>"string", "verbose_name"=>"Family name"], "email" => ["type"=>"string", "subtype"=>"email", "verbose_name"=>"E-Mail"], "phone" => ["type"=>"string", "subtype"=>"phone", "verbose_name"=>"User telepohone number", "null"=>true, "default"=>null], "username" => ["type"=>"string", "subtype"=>"username", "verbose_name"=>"Username"], "sha1_password" => ["type"=>"string", "verbose_name"=>"Password"], // Photograph of the user. Stored as a blob in database "main_photo" => ["type"=>"blob", "verbose_name"=>"User photo", "null"=>true, "default"=>null], "main_photo_mimetype" => ["type"=>"string", "verbose_name"=>"Mimetype of main_photo", "default" =>"application/octet-stream"], "main_photo_filename" => ["type"=>"string", "verbose_name"=>"Filename of main_photo", "null"=>true, "default"=>null], // Datetime fields "last_update_datetime" => ["type"=>"string", "subtype"=>"datetime", "verbose_name"=>"Last update of this object", "auto"=>true], "creation_datetime" => ["type"=>"string", "subtype"=>"datetime", "verbose_name"=>"Creation datetime of this object", "auto"=>true], ]; /** Primary key */ protected static $PK_ATTRIBUTES = ["stack", "id"]; /** * Related models. * */ protected static $RELATED_MODELS = ["Tag", "Photo", "Post"]; /** Relationships */ protected static $RELATIONSHIPS = [ ]; } User::init();
扩展Lulo
添加新的DBMS SQL模板
在sql_templates中添加一个新的文件夹,文件夹名称将标识你的DBMS(例如mssql2012)。
覆盖所需的查询。Lulo模板系统将首先加载你在此处指定的模板,如果找不到模板,它将尝试从_default文件夹加载。
待办事项
允许模型动态更改表。可以通过重新实现getTableName
方法来完成。代码翻译结束。- 将文档翻译成英文。
重新实现Collection以使用RecordSet。从模型创建表的脚本。管理命名空间中的Manager类允许创建和删除模型表。- 迁移。
许可
作者
- Lulo和Lulo查询由本项目的负责人和主要开发者Diego J. Romero López在intelligenia创建(diegoREMOVETHIS@REMOVETHISintelligenia.com)
- 数据库抽象层由intelligenia团队的多位成员创建。由Gerardo Fernandez Rodríguez审查和扩展。
- QueryResult由Gerardo Fernandez Rodríguez完成。
- MSSQL的几个错误修复和测试由Francisco Morales完成。
- 由Brian Holsters完成的少量翻译修正。