[■]
codesaur/dataobject
1=[↕]
1:1 ══ composer require codesaur/dataobject
codesaur/dataobject · v10.1.1
DataObject
PDO суурьтай өгөгдлийн модель ба хүснэгт удирдагч компонент (MySQL / PostgreSQL / SQLite)
[■]
DataObject
codesaur экосистемийн өгөгдлийн давхаргын үндсэн компонент. Model класс дээр багануудаа тодорхойлоход хүснэгтийг анх ашиглах үед автоматаар үүсгэж, insert / update / select / delete үйлдлүүдийг MySQL, PostgreSQL, SQLite дээр адилхан кодоор гүйцэтгэнэ. LocalizedModel нь олон хэлний контентыг {table}_content хүснэгтэд салгаж хадгална.
Онцлогууд
- Model - нэг хүснэгтэд зориулсан загварын суурь класс
- LocalizedModel - олон хэл дээрх контент ({table}_content) хадгалах
- Column - баганын төрөл, урт, default, primary, unique, auto increment
- Хүснэгтийг анх ашиглах үед автоматаар үүсгэх, __initial() hook
- MySQL / PostgreSQL / SQLite нэг кодоор - Constants::DRIVER_*
- getById, getRowWhere, getRows, countRows, insert, updateById, deleteById
- PDOTrait, TableTrait - дахин ашиглагдах PDO/хүснэгтийн үйлдлүүд
Үндсэн классууд
| Класс | Үүрэг |
|---|---|
Model | Нэг хүснэгтэд зориулсан загварын суурь класс |
LocalizedModel | Олон хэл дээрх контент хадгалах загварын суурь класс |
Column | Хүснэгтийн баганын бүтцийг тодорхойлох класс |
Constants | Driver, error code, column нэрсийн тогтмолууд |
PDOTrait | PDO үйлдлүүдийг төвлөрүүлсэн trait |
TableTrait | Хүснэгттэй ажиллах үндсэн боломжуудын trait |
Жишээ код
use codesaur\DataObject\Model;
use codesaur\DataObject\Column;
class UserModel extends Model
{
public function __construct(\PDO $pdo)
{
$this->setInstance($pdo);
$this->setColumns([
(new Column('id', 'bigint'))->primary(),
(new Column('username', 'varchar', 64))->unique(),
new Column('password', 'varchar', 255),
(new Column('is_active', 'tinyint'))->default(1),
new Column('created_at', 'datetime'),
]);
$this->setTable('users');
}
}
$pdo = new \PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$userModel = new UserModel($pdo);
// Нэмэх / Insert
$user = $userModel->insert([
'username' => 'john',
'password' => password_hash('secret', PASSWORD_DEFAULT),
'created_at' => date('Y-m-d H:i:s'),
]);
// Унших / Read
$user = $userModel->getById(1);
$user = $userModel->getRowWhere(['username' => 'john']);
$total = $userModel->countRows(['WHERE' => 'is_active=1']);
Тест ажиллуулах
composer test
[■]
Info
Суулгах
composer require codesaur/dataobject
Шаардлага
- PHP 8.2.1+
- ext-pdo
- MySQL / PostgreSQL / SQLite
- Composer
Баримт бичиг