cry/cry-cms-thing

All MySQL record is Object

2.09 2025-03-31 20:10 UTC

This package is auto-updated.

Last update: 2025-05-19 10:50:25 UTC


README

<?php
use CryCMS\Helpers\Thing;

/**
 * @property string $title
 * @property string $url
 * @property string $text
 * @property array $image_id
 * @property int $deleted
 *
 * @property array $image
 */

class Pages extends Thing
{
    public const TABLE = 'pages';
    public const SOFT_DELETE = true;
}
<?php
use CryCMS\Helpers\Thing;

class Image extends Thing
{
    public const TABLE = 'images';
    
    protected function validate(): void
    {
        if (empty($this->title)) {
            $this->addError('title', 'Заголовок не может быть пустым');
        }
    }
}

Создание новой записи

$page = new Pages();
$page->title = 'TEST';
$page->setAttributes([
    'url' => '/test/',
    'text' => 'Тест',
]);

$result = $page->save();

Изменение записи

$page = Pages::find()->byPk(1);
if ($page !== null) {
    $page->image_id = 1;
    $page->setAttributes([
        'text' => 'Новый текст',
    ]);
    $page->save();
}

Удаление записи

$page = Pages::find()->byPk(1);
if ($page !== null) {
    $page->delete();
}

Поиск по атрибутам

$pages = Pages::find()->listByAttributes([
    'deleted' => 0,
], 0, 10);

$page = Pages::find()->oneByAttributes([
    'deleted' => 0,
]);

Получение обьектов из SQL выборки - CryCMS-Db

$pages = Pages::Db()->where(["deleted = '0'"])->getAll();
$pages = Pages::itemsObjects($pages);

$page = Pages::Db()->where(["deleted = '0'"])->getOne();
$page = Pages::itemObject($page);

OR

$pagesList = Db::table(Pages::TABLE)->where(["deleted = '0'"])->getAll();
$pages = Pages::itemsObjects($pagesList);

$pageOne = Db::table(Pages::TABLE)->where(["deleted = '0'"])->getOne();
$page = Pages::itemObject($pageOne);