数据层是PDO数据库持久化抽象组件
1.0.0
2023-05-14 16:44 UTC
Requires
- php: >=7.0
- ext-pdo: *
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)。请参阅许可文件以获取更多信息。