matajm/php-orm

基于PDO的简单ORM

0.0.5 2017-12-19 23:48 UTC

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