🦖
[] codesaur/dataobject 1=[]
codesaur/dataobject · v10.1.1

DataObject

PDO суурьтай өгөгдлийн модель ба хүснэгт удирдагч компонент (MySQL / PostgreSQL / SQLite)

Packagist version Downloads PHP version License Aikido Intel 99/100
1:1 ══ composer require codesaur/dataobject
[] 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Хүснэгтийн баганын бүтцийг тодорхойлох класс
ConstantsDriver, error code, column нэрсийн тогтмолууд
PDOTraitPDO үйлдлүүдийг төвлөрүүлсэн 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
Aikido оноо 99/100
Шалгасан: 2026-09-04
Холбоосууд