cry/cry-cms-thing

All MySQL record is Object

2.11 2025-08-14 07:07 UTC

This package is auto-updated.

Last update: 2025-09-14 07:18:59 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', 'Title cannot be empty');
        }
    }
}

Create New

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

$result = $page->save();

Update

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

Delete

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

Find element by attributes

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

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

Create object by SQL query - 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);