数据层是PDO数据库持久化抽象组件

1.0.0 2023-05-14 16:44 UTC

This package is auto-updated.

Last update: 2024-09-06 21:53:52 UTC


README

ORM是一个工具,它通过对象导向系统和关系数据库之间的映射,允许通过控制来操作对象。ORM是数据库的持久化抽象组件,PDO已为执行记录、读取、编辑和删除数据等常见操作准备了指令。

ORM是一个工具,它通过对象导向系统和关系数据库之间的映射,允许通过控制来操作对象。ORM是数据库的持久化抽象组件,PDO已为执行记录、读取、编辑和删除数据等常见操作准备了指令。

数据层是数据库的持久化抽象组件,PDO已为执行记录、读取、编辑和删除数据等常见操作准备了指令。

特点

  • 易于配置
  • 完全CRUD抽象
  • 创建安全模型
  • Composer兼容
  • PSR-2兼容

安装

数据层可通过Composer安装

"paulinhosupriano/orm": "1.0.*"

composer require paulinhosupriano/orm

文档

有关如何使用ORM的详细信息,请参阅组件目录中的示例文件夹中的详细信息

有关如何使用ORM的更多详细信息,请参阅组件目录中的示例文件夹中的详细信息

连接

要开始使用ORM,您需要连接到数据库(MariaDB / MySql)。有关更多连接信息,请参阅PHP.net上的PDO连接手册

要开始使用ORM,我们需要连接到您的数据库。要查看可能的连接,请访问PHP.net上的PDO连接手册

const ORM_CONFIG = [
    "driver" => "mysql",
    "host" => "localhost",
    "port" => "3306",
    "dbname" => "banco_de_dados",
    "username" => "root",
    "passwd" => "",
    "options" => [
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
        PDO::ATTR_CASE => PDO::CASE_NATURAL
    ]
];

您的模型

ORM基于MVC结构,并使用层超级类型和活动记录设计模式。为了使用ORM,需要创建您的表模型并继承ORM。

ORM基于MVC结构,并使用层超级类型和活动记录设计模式。为了使用ORM,需要创建您的表模型并继承ORM。

<?php

class User extends Orm
{
    /**
     * User constructor.
     */
    public function __construct()
    {
        //string "TABLE_NAME", array ["REQUIRED_FIELD_1", "REQUIRED_FIELD_2"], string "PRIMARY_KEY", bool "TIMESTAMPS" 
        parent::__construct("tabela", ["campo_um_obrigatorio", "campo_dois_obrigatorio"]);
    }
}

查找

<?php

use Example\Models\User;

$model = new User();

//find all users
$users = $model->find()->fetch(true);

//find all users limit 2
$users = $model->find()->limit(2)->fetch(true);

//find all users limit 2 offset 2
$users = $model->find()->limit(2)->offset(2)->fetch(true);

//find all users limit 2 offset 2 order by field ASC
$users = $model->find()->limit(2)->offset(2)->order("campo_da_tabela ASC")->fetch(true);

// find all users with in operator
$users = $model->find()->in("id", [1, 2, 3])->fetch(true);

//looping users
foreach ($users as $user) {
    echo $user->campo_da_tabela;
}

//find one user by condition
$user = $model->find("campo_da_tabela = :name", "name=Paulinho")->fetch();
echo $user->campo_da_tabela;

//find one user by two conditions
$user = $model->find("campo_da_tabela = :name AND last_name = :last", "name=Paulinho&last=Supriano")->fetch();
echo $user->campo_da_tabela . " " . $user->first_last;

//find one user by condition and with in operator
$user = $model->find("campo_da_tabela = :name", "name=Paulinho")->in("last_name",["Menezes", "Sampaio"])->fetch(true);

foreach ($users as $user) {
    echo $user->campo_da_tabela . " " . $user->first_last;
}

findById

<?php

use Example\Models\User;

$model = new User();
$user = $model->findById(2);
echo $user->campo_da_tabela;

安全参数

请参阅find_example.php示例和模型类

请参阅find_example.php示例和模型类

<?php

$params = http_build_query(["name" => "devSupriano"]);
$company = (new Company())->find("name = :name", $params);
var_dump($company, $company->fetch());

连接方法

请参阅find_example.php示例和模型类

请参阅find_example.php示例和模型类

<?php

$addresses = new Address();
$address = $addresses->findById(22);
//get user data to this->user->[all data]
$address->user();
var_dump($address);

计数

<?php

use Example\Models\User;

$model = new User();
$count = $model->find()->count();

保存创建

<?php

use Example\Models\User;

$user = new User();
$user->campo_da_tabela = "Paulinho";
$user->last_name = "Supriano";
$userId = $user->save();

// ou 
//$user = new User();
//$user->setData([
//    'campo_da_tabela' =>'Paulinho',
//    'last_name' => 'Supriano'
//]);
//$userId = $user->save();

保存更新

<?php

use Example\Models\User;

$user = (new User())->findById(2);
$user->campo_da_tabela = "Paulinho";
$userId = $user->save();

销毁

<?php

use Example\Models\User;

$user = (new User())->findById(2);
$user->destroy();

失败

<?php

use Example\Models\User;

$user = (new User())->findById(2);
if($user->fail()){
    echo $user->fail()->getMessage();
}

自定义数据方法

<?php

class User{

    public function fullName(): string 
    {
        return "{$this->campo_da_tabela} {$this->last_name}";
    }
    
    public function document(): string
    {
        return "Restrict";
    }
}

echo $this->full_name; //Paulinho Supriano
echo $this->document; //Restrict

支持

安全:如果您发现任何安全问题,请通过paulinhosupriano@gmail.com发送电子邮件,而不是使用问题跟踪器。

如果您发现任何安全问题,请通过paulinhosupriano@gmail.com发送电子邮件,而不是使用问题跟踪器。

谢谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。