matajm / php-orm
基于PDO的简单ORM
0.0.5
2017-12-19 23:48 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-29 04:26:02 UTC
README
一个简单实用的基于PDO实例的ORM。
要求
- PDO
- PHP 5.6+
数据库支持
- Postgres 9.5+
安装
composer require matajm/php-orm
设置数据库连接
为了设置数据库连接,只需在文件开头使用以下命令。
Database::$dns = 'pgsql:port=[port];host=[host];dbname=[db_name]'; Database::$username = 'Ingrese su usuario'; Database::$password = 'Contraseña';
这三行代表ORM的初始配置。
创建你的模型
创建模型就像创建一个类一样简单。
use \phpORM\Models; use \phpORM\Fields\StringField; use \phpORM\Fields\AutoIncrementField; use \phpORM\Fields\IntegerField; class Animal extends Models { protected static $table_name = "animal"; public $id = [ "type" => AutoIncrementField::class, "db_column" => "animal_id", "primary_key" => true ]; public $name = [ "type" => StringField::class, "db_column" => "animal_nombre" ]; public $eyes = [ "type" => StringField::class, "db_column" => "animal_cantidad_ojos", "default" => 0 ]; }
继承模型
你可以通过继承来创建具有属性和功能的模型。
class Perro extends Animal { protected static $table_name = "perro"; public $eyes = [ "type" => StringField::class, "db_column" => "animal_cantidad_ojos", "default" => 2 ]; }
如前一个模型所示,类Perro继承了所有方法和属性,并改变了默认值$eyes。
在数据库中创建表
为了创建相应的表,你可以逐一创建或者使用方法Database::createTables。
Animal::createTable() # crea la tabla animal Database::createTables([ Animal::class, Perro::class ]) # crea todas las tablas
在数据库中删除表
为了删除相应的表,你可以逐一删除或者使用方法Database::dropTable。
Animal::dropTable() # elimina la tabla animal Database::dropTables([ Animal::class, Perro::class ]) # crea todas las tablas
创建一个对象
创建一个序列化对象不会在数据库中插入记录,而是生成一个表示数据库模式的对象,为了持久化更改,需要使用方法Serializers::save()。
$mascota = Perro::create([ "name" => "Punky", ]); $mascota->name #Punky $mascota->id #NULL $mascota->save() # Inserta el registro $mascota->id # 1
方法Serializers::save()记录所有更改,如果不存在记录则插入,如果检测到更改则更新记录。
$mascota->name = "Bolt"; $mascota->save();
删除记录
方法Serializers::remove()从数据库中删除对象。
$mascota->remove(); $mascota->save(); # IntegrityError no existe
查找记录
根据搜索需求,存在三种查找记录的方法。
Perro::find() # busca todos los registros Perro::findOne() # busca un registro Perro::findId(1) #busca el registro que posea la clave id 1