nozerrat / daniia
Daniia ORM 框架
dev-master
2018-09-11 15:57 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-26 17:26:26 UTC
README
Daniia
这是一个基于 ORM ActiveRecord 设计模式的 PHP 对象关系映射 (ORM) 框架。
安装
Composer
使用 Composer 安装,只需安装此包的最新版本。
composer require nozerrat/daniia dev-master
要求
- PHP >= 5.3
- PDO
支持的数据库引擎
Daniia ORM 兼容以下数据库
- MySQL 5.1+
- Postgres 8+
- SQLite3
- SQLServer 2008+
- Oracle
数据库连接
首先需要声明常量,然后注册连接数据以便使用 Daniia 框架,常量包括 USER、PASS、SCHEMA 和 DSN。
例如
// Conexión con la Base de Datos MySql define("USER","root"); define("PASS","1234"); define("DSN","mysql:port=3306;host=localhost;dbname=test");
另一个示例
// Conexión con la Base de Datos PostgreSql define("USER","postgres"); define("PASS","1234"); define("SCHEMA","public"); define("DSN","pgsql:port=5432;host=localhost;dbname=postgres");
实例化 Daniia ORM
use Daniia\Daniia; $daniia = new Daniia(); $daniia->table('personas')->get();// consultamos todos los datos
如果继承 Daniia 类,则必须继承 BaseDaniia 类
use Daniia\Daniia; use Daniia\BaseDaniia; class Personas extends BaseDaniia { protected $table = "personas"; //Nombre de la tabla protected $primaryKey = "id"; //Clave primaria de la tabla } $personas = new Personas(); $personas->get();// consultamos todos los datos
也可以从 Daniia 实例更改 primaryKey
$daniia->primaryKey("id");
使用和示例
使用 Daniia ORM 非常简单,这里我们将应用一些框架使用的示例
插入
// Insert simple $daniia->table("personas")->insert(["ci"=>1,"nombre"=>"Carlos","apellido"=>"Garcia"]); // Insert multiples $daniia->table("personas")->insert([ ["ci"=>1,"nombre"=>"Carlos","apellido"=>"Garcia"], ["ci"=>2,"nombre"=>"Carlos","apellido"=>"Garcia"], ["ci"=>3,"nombre"=>"Carlos","apellido"=>"Garcia"], ]);
更新
// Update simple $daniia->table("personas")->primaryKey("id")->update(["id"=>1,"ci"=>"1111","nombre"=>"aa","apellido"=>"aa"]); // o en caso de que la ID no este esablecida en los datos $daniia->table("personas")->where("id",1)->update(["ci"=>"1111","nombre"=>"aa","apellido"=>"aa"], true/*Ignorar primaryKey*/); // Update multiples $daniia->table("personas")->primaryKey("id")->update([ ["id"=>1,"ci"=>4,"nombre"=>"Petra","apellido"=>""], ["id"=>2,"ci"=>5,"nombre"=>"José","apellido"=>"Jill"], ["id"=>3,"ci"=>6,"nombre"=>"Jhon","apellido"=>"Peña"], ]);
删除
$daniia->table("personas")->where("id",2)->delete(); $daniia->table("personas")->delete(3); $daniia->table("personas")->delete([3]); $daniia->primaryKey('id')->table("personas")->delete(6,7); $daniia->primaryKey('id')->table("personas")->delete([6,7]); $daniia->primaryKey('id')->table("personas")->find(8)->delete(); $daniia->primaryKey('id')->table("personas")->find([8])->delete();
选择
$daniia->table('personas')->select()->get(); $daniia->table('personas')->select('COUNT(*)')->first(); $daniia->table('personas')->select('ci','nombre')->first(); $daniia->table('personas')->select(['ci','nombre'])->first();
有效的运算符
Daniia 框架支持的运算符有:=, <, >, <=, >=, <>, !=, like, not like, in, is, is not, ilike, between, not between。
例如
/** * OPERADORES VALIDOS **/ $daniia->table("personas")->where("id","4")->first();// por defecto es '=' $daniia->table("personas")->where("id",'=',"4")->first(); $daniia->table("personas")->where("id",'like',"4")->first(); $daniia->table("personas")->where("id",["4"])->first();// si es un array por default es 'IN' $daniia->table("personas")->where("id",'in',["4"])->first(); $daniia->table("personas")->where("id",'is',"true",false)->first();//el parametro false indica no escapar valor // o puede usar en este caso $daniia->table("personas")->where("id is true")->first();
表
table 方法用于指定要查询的表的名称
$daniia->table('personas')->first(); $daniia->table(['personas'])->first(); // realizamos un JOIN $daniia->table('personas','oficina')->first(); $daniia->table(['personas','oficina'])->first();
从
from 方法类似于 table 方法,用于指定要查询的表名,但如果在参数中指定闭包,则表示在 from 子句中包含的子查询。
$daniia->from('personas')->first(); $daniia->from(['personas'])->first(); $daniia->from('personas','oficina')->first(); $daniia->from(['personas','oficina'])->first(); // especificamos un sub-query $daniia->from(function (Daniia $daniia) { $daniia->table("personas"); })->first(); // con alias para el sub-query contenido en el método from $daniia->from(function (Daniia $daniia) { $daniia->table("personas"); }, "myAlias")->first(); // otro ejemplo de sub-query anidado contenido en el clausula from $daniia->from(function (Daniia $daniia) { $daniia->from(function (Daniia $daniia) { $daniia->from(function (Daniia $daniia) { $daniia->table("personas"); }, "C"); }, "B"); }, "A")->first(); // otro ejemplo $daniia ->select("P.id","P.nombre","P.apellido") ->from(function (Daniia $daniia) { $daniia ->table("personas") ->select("personas.id","personas.nombre","personas.apellido"); }, 'P')->first();
Join, LeftJoin, RightJoin
// Join alternativa $daniia->table('personas','oficina')->where('personas.id','oficina.id_personas',false)->first(); $daniia->table('personas')->join("oficina","personas.id","oficina.id_personas")->first(); $daniia->table('personas')->innerJoin("oficina","personas.id","=","oficina.id_personas")->first(); $daniia->table('personas')->leftJoin("oficina","personas.id","oficina.id_personas")->first(); $daniia->table('personas')->rightJoin("oficina","personas.id","oficina.id_personas")->first(); $daniia->table('personas')->rightJoin("oficina",['personas.id'=>[4,5,6,7]])->first(); $daniia->table("personas")->join('oficina',"personas.id",function(Daniia $query) { $query->select("personas.id")->from("personas")->where("personas.id","4")->limit(1); })->first(); $daniia->table('personas')->join("oficina",function(Daniia $daniia) { $daniia ->on("personas.id",TRUE) ->on("personas.id",FALSE) ->on("personas.id",NULL) ->on("personas.id",[TRUE,FALSE,NULL]) ->on("personas.id",[1,2,3,4]) ->on("personas.id","oficina.id_personas") ->on( ["personas.id"=>"oficina.id_personas"] ) ->on( ["personas.id <>"=>"oficina.id_personas"] ) ->orOn("personas.id",'<>',"oficina.id_personas") ->andOn("personas.id","holas",true) //Escapamos el valor })->first(); $daniia->table('personas')->join("oficina alias_a",function(Daniia $daniia) { $daniia->on(function(Daniia $daniia) { $daniia->on("personas.id","alias_a.id_personas"); }); })->join("oficina alias_b",function(Daniia $daniia) { $daniia->on("personas.id",'=',function(Daniia $daniia) { $daniia->table('oficina')->select('id_personas')->where('id_personas',4); }); })->first(); $daniia->table('personas')->join("oficina",function(Daniia $daniia) { $daniia->on("personas.id",function(Daniia $daniia) { $daniia->select("personas.id")->from("personas")->where("personas.id","4")->limit(1); }); })->first();
Get, GetArray
$daniia->table('personas')->get(); $daniia->table('personas')->getArray(); // en caso de que queramos realizar filtros en los datos consultados y queramos contituar consultando solo pasamos un Closure al método get o getArray y lo retornamos $daniia->table('personas')->get(function( $data, Daniia $daniia ){ // realizar algún filtro return $data; }); $daniia->table('personas')->getArray(function( $data, Daniia $daniia ){ // realizar algún filtro return $data; });
List
$daniia->table('personas')->lists('nombre'); $daniia->table('personas')->lists('nombre','id'); $daniia->table('personas')->lists('nombre',function( $data, Daniia $daniia ){ // realizar algún filtro return $data; }); $daniia->table('personas')->lists('nombre','id',function( $data, Daniia $daniia ){ // realizar algún filtro return $data; });
Find
$daniia->table('personas')->find(); // Consulta Todos $daniia->table('personas')->where('id',1)->find(); $daniia->table('personas')->find(1); $daniia->table('personas')->find([1]); $daniia->table('personas')->find(1,2); $daniia->table('personas')->find([1,2]); $daniia->table('personas')->find(2); echo $daniia->id; echo $daniia->ci; echo $daniia->nombre; echo $daniia->apellido; $daniia->table('personas')->find(1,2,function($data, Daniia $daniia) { // realizar algún filtro return $data; }); $daniia->table('personas')->find([1,2],function($data, Daniia $daniia) { // realizar algún filtro return $data; });
First, FirstArray
$daniia->table('personas')->first(); $daniia->table('personas')->firstArray(); $daniia->table('personas')->where('id',1)->first(); $daniia->table('personas')->where('id',1)->firstArray(); $daniia->table('personas')->primaryKey('id')->find([1,2])->first(); $daniia->table('personas')->primaryKey('id')->find([1,2])->firstArray(); $daniia->table('personas')->first(function($data, Daniia $daniia) { // realizar algún filtro return $data; }); $daniia->table('personas')->firstArray(function($data, Daniia $daniia) { // realizar algún filtro return $data; }); $daniia->table('personas')->primaryKey('id')->find([1,2],function($data, Daniia $daniia) { // realizar algún filtro return $data; })->first(function($data, Daniia $daniia) { // realizar algún filtro return $data; });
Save
$daniia->table('personas')->find(2); $daniia->nombre = "yyyyyyyy"; $daniia->save();//UPDATE $daniia->table('personas')->find(1,2)->first(); $daniia->nombre = "yyyyyyyy"; $daniia->save();//UPDATE // Cuendo la función find esta sin argumento es obligatorio // usar la función first para extraer los datos del Array // consultado $daniia->table('personas')->where('id',1)->find()->first(); $daniia->nombre = "yyyyyyyy"; $daniia->save();//UPDATE $daniia->table('personas')->find('00')->first(); // registro no existe.. $daniia->ci = "123456789"; $daniia->nombre = "Carlos"; $daniia->apellido = "Garcia"; $daniia->save();//INSERT $daniia->table('personas'); $daniia->ci = "123456789"; $daniia->nombre = "Carlos"; $daniia->apellido = "Garcia"; $daniia->save();//INSERT $daniia->table('personas')->find()->first(); $daniia->ci = "123456789"; $daniia->nombre = "Carlos"; $daniia->apellido = "Garcia"; $daniia->save(function($data, Daniia $daniia) { // Si la actualización es exitosa devuelve los datos actualizado // sino, devuelve los datos insertado return $data; });//UPDATE
Where
$daniia->table("personas")->where("id","1")->first(); $daniia->table("personas")->where("id",'=',"1")->first(); $daniia->table("personas")->where("id","4")->andWhere("id","4")->first(); $daniia->table("personas")->where("id",4)->orWhere("id",4)->first(); $daniia->table("personas")->where("id",[4,5,6,7])->first(); $daniia->table("personas")->where("id",'in',[4,5,6,7])->first(); $daniia->table("personas")->where(function (Daniia $daniia) { $daniia->where("id",4)->andWhere("apellido","LIKE","%garcia%"); })->first(); $daniia->table("personas")->where("id",FALSE)->orWhere("id",TRUE)->orWhere("id",NULL)->first(); $daniia->table("personas")->where("id",'=',FALSE)->orWhere("id",'=',TRUE)->orWhere("id",'=',NULL)->first(); $daniia->table("personas")->where("id",[TRUE,FALSE,NULL])->first(); $daniia->table("personas")->where(function (Daniia $daniia) { $daniia->where("id",4); })->orWhere(function (Daniia $daniia){ $daniia->where("id",4); })->first(); $daniia->table("personas")->where(function (Daniia $daniia) { $daniia->where("id","1")->orWhere(function (Daniia $daniia) { $daniia->where("id","2")->andWhere(function (Daniia $daniia) { $daniia->where("id","3"); }); }); })->first(); $daniia->table("personas")->where("personas.id",function($query) { $query->table("personas")->select("id")->where("id",4)->limit(1); })->first(); $daniia->table("personas")->where("personas.id","=",function($query) { $query->table("personas")->select("id")->where("id",4)->limit(1); })->first(); $daniia->table("personas")->where("id",'in',function(Daniia $daniia){ $daniia->table('personas')->select('id'); })->first(); $daniia->table("personas")->where(['nombre'=>'carlos'])->first(); $daniia->table("personas")->where(['nombre !='=>'carlos'])->first(); $daniia->table("personas")->where(['nombre'=>[4,5,6,7]])->first(); $daniia->table("personas")->where(['nombre in'=>[4,5,6,7]])->first(); $daniia->table("personas")->where(["personas.id"=>function(Daniia $daniia) { $daniia->table("personas")->select()->where("id",4)->limit(1); }])->first(); $daniia->table("personas")->where(["personas.id !="=>function(Daniia $daniia) { $daniia->table("personas")->select()->where("id",4)->limit(1); }])->first();
Having
$daniia->table("personas")->having("id","1")->first(); $daniia->table("personas")->having("id",'=',"1")->first(); $daniia->table("personas")->having("id","4")->andHaving("id","4")->first(); $daniia->table("personas")->having("id",4)->orHaving("id",4)->first(); $daniia->table("personas")->having("id",[4,5,6,7])->first(); $daniia->table("personas")->having("id",'in',[4,5,6,7])->first(); $daniia->table("personas")->having(function (Daniia $daniia) { $daniia->having("id",4)->andHaving("apellido","LIKE","%garcia%"); })->first(); $daniia->table("personas")->groupBy( "id" )->having("id",false)->having("id",true)->having("id",null)->first(); $daniia->table("personas")->groupBy( "id" )->having("id",'=',false)->having("id",'=',true)->having("id",'=',null)->first(); $daniia->table("personas")->groupBy( "id" )->having("id",[true,false,null])->first(); $daniia->table("personas")->having(function (Daniia $daniia) { $daniia->having("id",4); })->orHaving(function (Daniia $daniia){ $daniia->having("id",4); })->first(); $daniia->table("personas")->having(function (Daniia $daniia) { $daniia->having("id","1")->orHaving(function (Daniia $daniia) { $daniia->having("id","2")->andHaving(function (Daniia $daniia) { $daniia->having("id","3"); }); }); })->first(); $daniia->table("personas")->having("personas.id",function(Daniia $daniia) { $daniia->table("personas")->select("id")->having("id",4)->limit(1); })->first(); $daniia->table("personas")->having("personas.id","=",function(Daniia $daniia) { $daniia->table("personas")->select("id")->having("id",4)->limit(1); })->first(); $daniia->table("personas")->having("id",'in',function(Daniia $daniia){ $daniia->table('personas')->select('id'); })->first();
Union
$daniia->table("personas")->where('id',1)->union(function (Daniia $daniia) { $daniia->table("personas")->where('id',1); })->get(); $daniia->table("personas")->select('id')->union(function (Daniia $daniia) { $daniia->table("oficina")->select('id_personas AS id'); })->get(); $daniia->table("personas")->select('id')->where('id',1)->union(function (Daniia $daniia) { $daniia->table("oficina")->select('id_personas AS id')->where('id_personas',4); })->get(); $daniia->table("personas")->where('id',1)->union(function (Daniia $daniia) { $daniia->table("personas")->where('id',1); })->union(function (Daniia $daniia) { $daniia->table("personas")->where('id',1); })->limit(1)->get();
Order By
$daniia->table("personas")->orderBy("ci")->get(); $daniia->table("personas")->orderBy(["ci"])->get(); $daniia->table("personas")->orderBy("apellido","nombre")->get(); $daniia->table("personas")->orderBy(["apellido","nombre"])->get(); // al final se indica el tipo de orden $daniia->table("personas")->orderBy("apellido","nombre",'asc')->get(); $daniia->table("personas")->orderBy(["apellido","nombre",'desc'])->get();
Group By
$daniia->table("personas")->groupBy("ci")->first(); $daniia->table("personas")->groupBy(["ci"])->get(); $daniia->table("personas")->groupBy("apellido","nombre")->get(); $daniia->table("personas")->groupBy(["apellido","nombre"])->get();
Limit
$daniia->table("personas")->limit("1")->get(); $daniia->table("personas")->limit(["1"])->get(); $daniia->table("personas")->limit("1","0")->get(); $daniia->table("personas")->limit(["1","0"])->get();
Offset
$daniia->table("personas")->limit("1")->offset("0")->get();
其他
// Obtiene la última ID insertada en la base de datos $daniia->lastId(); // Obtiene el última Query ejecutado $daniia->lastQuery(); // Obtiene los últimos datos consultados $daniia->getData();
API
Daniia { // Obtener datos resultante despues de la ejecución public integer lastId( void ); public mixed lastQuery( void ); public mixed getData( void ); public array error( void ); // Escape de cadenas de caracteres public string quote( void ); // Sentencia para transación public Daniia begin( void ); public Daniia commit( void ); public Daniia rollback( void ); // ejecutar sentencias SQL public object query( string $sql [, Closure $closure] ); public array queryArray( string $sql [, Closure $closure] ); // Obtiener los campos de la tabla especificada public array columns( string $table = null ); // ejecutar Query Builder public array get( [Closure $closure] ); public array getArray( [Closure $closure] ); public array all( [Closure $closure] ); public array allArray( [Closure $closure] ); public object first( [Closure $closure] ); public array firstArray( [Closure $closure] ); public array lists( string $column [, string $index = null | Closure $closure ] [, Closure $closure] ); public bool save( [Closure $closure] ); public Daniia find( [string $ids [, ...] | array $ids] [, Closure $closure] ); public bool truncate( void ); public int insertGetId( array $datas ); public bool insert( array $datas [, $returning_id = false] ); // $returning_id solo para PostgresSql public bool update( [array $datas] ); public bool delete( [string $ids [, ...] | array $ids = []] ); // Query Builder public Daniia primaryKey( string $primaryKey ); public Daniia table( string $table [, ...] | array $table ); public Daniia select( string $select [, ...] | array $select ); public Daniia from( string $table [, ...] | array $table | Closure $table [, string $aliasFrom = ""] ); public Daniia join( string $table, string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia innerJoin( string $table, string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia leftJoin( string $table, string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia rightJoin( string $table, string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia on( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia orOn( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia andOn( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia where( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia orWhere( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia andWhere( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia union( Closure $closure ); public Daniia having( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia orHaving( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia andHaving( string $column | Closure $column [, string $operator = null | Closure $operator [, string $value = null | Closure $value | bool $value [, bool $scape_quote = false ]]] ); public Daniia groupBy( string $fields | array $fields ); public Daniia orderBy( string $fields | array $fields ); public Daniia limit( int $limit [, int $offset = null ] | array $limit ); public Daniia offset( int $offset); }