Абстрактный класс Phalcon\Mvc\Model

Реализует Phalcon\Mvc\EntityInterface, Phalcon\Mvc\ModelInterface, Phalcon\Mvc\Model\ResultInterface, Phalcon\Di\InjectionAwareInterface, Serializable, JsonSerializable

Source on GitHub

Phalcon\Mvc\Model соединяет бизнес-объекты и таблицы базы данных для создания устойчивой модели домена, в которой логика и данные представлены в одной оболочке. Это реализация объектно-реляционного отображения (ORM).

Модель представляет собой информацию (данные) приложения и правила для управления этими данными. Модели в основном используются для управления правилами взаимодействия с соответствующей таблицей базы данных. В большинстве случаев каждая таблица в базе данных будет соответствовать одной модели в приложении. Основная часть бизнес-логики приложения будет сосредоточена в моделях.

Phalcon\Mvc\Model - это первый ORM, написанный на языках Zephir/C для PHP, дающий разработчикам высокую производительность при взаимодействии с базами данных, а также Простой в использовании.

<?php

$robot = new Robots();

$robot->type = "mechanical";
$robot->name = "Astro Boy";
$robot->year = 1952;

if ($robot->save() === false) {
    echo "Мы можем хранить роботы: ";

    $messages = $robot->getMessages();

    foreach ($messages as $message) {
        echo $message;
    }
} else {
    echo "Отлично, новый робот был успешно сохранен!";
}

Константы

integer OP_NONE

integer OP_CREATE

integer OP_UPDATE

integer OP_DELETE

integer DIRTY_STATE_PERSISTENT

integer DIRTY_STATE_TRANSIENT

integer DIRTY_STATE_DETACHED

Методы

final public __construct ([mixed $data], [Phalcon\DiInterface $dependencyInjector], [Phalcon\Mvc\Model\ManagerInterface $modelsManager])

Phalcon\Mvc\Model конструктор

public setDI (Phalcon\DiInterface $dependencyInjector)

Задает контейнер внедрения зависимостей

public getDI ()

Возвращает контейнер внедрения зависимостей

protected setEventsManager (Phalcon\Events\ManagerInterface $eventsManager)

Устанавливает пользовательский менеджер событий

protected getEventsManager ()

Возвращает диспетчер пользовательских событий

public getModelsMetaData ()

Возвращает службу метаданных моделей, связанную с экземпляром сущности

public getModelsManager ()

Возвращает диспетчер моделей, связанный с экземпляром сущности

public setTransaction (Phalcon\Mvc\Model\TransactionInterface $transaction)

Задает транзакцию, связанную с экземпляром модели

<?php

use Phalcon\Mvc\Model\Transaction\Manager as TxManager;
use Phalcon\Mvc\Model\Transaction\Failed as TxFailed;

try {
    $txManager = new TxManager();

    $transaction = $txManager->get();

    $robot = new Robots();

    $robot->setTransaction($transaction);

    $robot->name       = "WALL·E";
    $robot->created_at = date("Y-m-d");

    if ($robot->save() === false) {
        $transaction->rollback("Can't save robot");
    }

    $robotPart = new RobotParts();

    $robotPart->setTransaction($transaction);

    $robotPart->type = "head";

    if ($robotPart->save() === false) {
        $transaction->rollback("Робот не может быть сохранен");
    }

    $transaction->commit();
} catch (TxFailed $e) {
    echo "Failed, reason: ", $e->getMessage();
}

protected setSource (mixed $source)

Задает имя таблицы, к которой должна быть сопоставлена модель

public getSource ()

Возвращает имя таблицы, сопоставленное в модели

protected setSchema (mixed $schema)

Задает имя схемы, в которой расположена сопоставленная таблица

public getSchema ()

Возвращает имя схемы, в которой расположена сопоставленная таблица

public setConnectionService (mixed $connectionService)

Задает имя службы подключения DependencyInjection

public setReadConnectionService (mixed $connectionService)

Задает имя службы подключения DependencyInjection, используемое для чтения данных

public setWriteConnectionService (mixed $connectionService)

Задает имя службы подключения DependencyInjection, используемое для записи данных

public getReadConnectionService ()

Возвращает имя службы подключения DependencyInjection, используемое для чтения данных, связанных с моделью

public getWriteConnectionService ()

Возвращает имя службы подключения DependencyInjection, используемое для записи данных, связанных с моделью

public setDirtyState (mixed $dirtyState)

Задает измененное состояние объекта с помощью одной из констант DIRTY_STATE_*

public getDirtyState ()

Возвращает одну из констант DIRTY_STATE_*, указывающих, существует ли запись в базе данных

public getReadConnection ()

Возвращает соединение, используемое для чтения данных модели

public getWriteConnection ()

Возвращает соединение, используемое для записи данных в модель

public Phalcon\Mvc\Model assign (array $data, [mixed $dataColumnMap], [array $whiteList])

Присваивает модели значения из массива

<?php

$robot->assign(
    [
        "type" => "mechanical",
        "name" => "Astro Boy",
        "year" => 1952,
    ]
);

// Назначить по строке БД, необходима карта столбцов
$robot->assign(
    $dbRow,
    [
        "db_type" => "type",
        "db_name" => "name",
        "db_year" => "year",
    ]
);

// Разрешить назначать только имя и год
$robot->assign(
    $_POST,
    null,
    [
        "name",
        "year",
    ]
);

// По умолчанию assign метод будет использовать сеттеры, если существуют,
// вы можете отключить его с помощью ini_set непосредственно использовать свойства
ini_set("phalcon.orm.disable_assign_setters", true);

$robot->assign(
    $_POST,
    null,
    [
        "name",
        "year",
    ]
);

public static cloneResultMap (Phalcon\Mvc\ModelInterface | Phalcon\Mvc\Model\Row $base, array $data, array $columnMap, [int $dirtyState], [boolean $keepSnapshots])

Присваивает значения модели из массива, возвращая новую модель.

<?php

$robot = \Phalcon\Mvc\Model::cloneResultMap(
    new Robots(),
    [
        "type" => "mechanical",
        "name" => "Astro Boy",
        "year" => 1952,
    ]
);

public static mixed cloneResultMapHydrate (array $data, array $columnMap, int $hydrationMode)

Возвращает гидратированный результат на основе данных и карты столбцов

public static Phalcon\Mvc\ModelInterface cloneResult (Phalcon\Mvc\ModelInterface $base, array $data, [int $dirtyState])

Присваивает значения модели из массива, возвращающего новую модель

<?php

$robot = Phalcon\Mvc\Model::cloneResult(
    new Robots(),
    [
        "type" => "mechanical",
        "name" => "Astro Boy",
        "year" => 1952,
    ]
);

public static find ([mixed $parameters])

Запрос набора записей, соответствующих заданным условиям

// Сколько роботов есть?
 $robots = Robots::find();

 echo "Есть ", count($robots), "\n";

 // Сколько механических роботов есть?
 $robots = Robots::find(
     "type = 'mechanical'"
 );

 echo "Есть ", count($robots), "\n";

 // Получить и распечатать виртуальных роботов, упорядоченных по имени
 $robots = Robots::find(
     [
         "type = 'virtual'",
         "order" => "name",
     ]
 );

 foreach ($robots as $robot) {
     echo $robot->name, "\n";
 }

 // Получить первые 100 виртуальных роботов, упорядоченных по имени
 $robots = Robots::find(
     [
         "type = 'virtual'",
         "order" => "name",
         "limit" => 100,
     ]
 );

 foreach ($robots as $robot) {
     echo $robot->name, "\n";
 }

 // Инкапсулируйте его в выполняемую транзакцию, полезную для прикладных единичных тестов
 // или сложной бизнес-логики, где мы хотим контролировать, какие транзакции используются.

 $myTransaction = new Transaction(\Phalcon\Di::getDefault());
 $myTransaction->begin();

 $newRobot = new Robot();
 $newRobot->setTransaction($myTransaction);

 $newRobot->assign(
     [
         'name' => 'test',
         'type' => 'mechanical',
         'year' => 1944,
     ]
 );

 $newRobot->save();

 $resultInsideTransaction = Robot::find(
     [
         'name' => 'test',
         Model::TRANSACTION_INDEX => $myTransaction,
     ]
 );

 $resultOutsideTransaction = Robot::find(['name' => 'test']);

 foreach ($setInsideTransaction as $robot) {
     echo $robot->name, "\n";
 }

 foreach ($setOutsideTransaction as $robot) {
     echo $robot->name, "\n";
 }

 // Отменяет все изменения, не связанные с коммутацией
 $myTransaction->rollback();

 // Создание двух различных транзакций
 $myTransaction1 = new Transaction(\Phalcon\Di::getDefault());
 $myTransaction1->begin();
 $myTransaction2 = new Transaction(\Phalcon\Di::getDefault());
 $myTransaction2->begin();

  // Добавить новых роботов
 $firstNewRobot = new Robot();
 $firstNewRobot->setTransaction($myTransaction1);
 $firstNewRobot->assign(
     [
         'name' => 'first-transaction-robot',
         'type' => 'mechanical',
         'year' => 1944,
     ]
 );
 $firstNewRobot->save();

 $secondNewRobot = new Robot();
 $secondNewRobot->setTransaction($myTransaction2);
 $secondNewRobot->assign(
     [
         'name' => 'second-transaction-robot',
         'type' => 'fictional',
         'year' => 1984,
     ]
 );
 $secondNewRobot->save();

 // Эта транзакция найдет робота.
 $resultInFirstTransaction = Robot::find(
     [
         'name'                   => 'first-transaction-robot',
         Model::TRANSACTION_INDEX => $myTransaction1,
     ]
 );

 // Эта транзакция не найдет робота.
 $resultInSecondTransaction = Robot::find(
     [
         'name'                   => 'first-transaction-robot',
         Model::TRANSACTION_INDEX => $myTransaction2,
     ]
 );

 // Эта транзакция не найдет робота.
 $resultOutsideAnyExplicitTransaction = Robot::find(
     [
         'name' => 'first-transaction-robot',
     ]
 );

 // Эта транзакция не найдет робота.
 $resultInFirstTransaction = Robot::find(
     [
         'name'                   => 'second-transaction-robot',
         Model::TRANSACTION_INDEX => $myTransaction2,
     ]
 );

 // Эта транзакция найдет робота.
 $resultInSecondTransaction = Robot::find(
     [
         'name'                   => 'second-transaction-robot',
         Model::TRANSACTION_INDEX => $myTransaction1,
     ]
 );

 // Эта транзакция не найдет робота.
 $resultOutsideAnyExplicitTransaction = Robot::find(
     [
         'name' => 'second-transaction-robot',
     ]
 );

 $transaction1->rollback();
 $transaction2->rollback();

Параметры по умолчанию.

 @param arrray|string|int|null parameters = [
     'conditions' => ''
     'columns' => '',
     'bind' => [],
     'bindTypes' => [],
     'order' => '',
     'limit' => 10,
     'offset' => 5,
     'group' => 'name, status',
     'for_updated' => false,
     'shared_lock' => false,
     'cache' => [
         'lifetime' => 3600,
         'key' => 'my-find-key'
     ],
     'hydration' => null
 ]

public static static findFirst ([string | array $parameters])

Запрос первой записи, соответствующей заданным условиям

<?php

// Это первый робот в таблице роботов?
$robot = Robots::findFirst();

echo "Имя робота ", $robot->name;

// Какой первый механический робот в таблице роботов?
$robot = Robots::findFirst(
    "type = 'mechanical'"
);

echo "Первое имя механического робота ", $robot->name;

// Получить первого виртуального робота по имени
$robot = Robots::findFirst(
    [
        "type = 'virtual'",
        "order" => "name",
    ]
);

echo "Имя первого виртуального робота ", $robot->name;

public static query ([Phalcon\DiInterface $dependencyInjector])

Создание критериев для конкретной модели

protected boolean _exists (Phalcon\Mvc\Model\MetaDataInterface $metaData, Phalcon\Db\AdapterInterface $connection, [string | array $table])

Проверяет, существует ли текущая запись

protected static Phalcon\Mvc\Model\ResultsetInterface _groupResult (mixed $functionName, string $alias, array $parameters)

Создать PHQL SELECT для совокупности

public static mixed count ([array $parameters])

Подсчитывает, сколько записей соответствует заданным условиям

<?php

// Сколько здесь роботов?
$number = Robots::count();

echo "Есть ", $number, "\n";

// Сколько здесь механических роботов?
$number = Robots::count("type = 'mechanical'");

echo "Есть ", $number, " mechanical robots\n";

Параметры по умолчанию:

 @param arrray|string|int|null parameters = [
     'conditions' => ''
     'columns' => '',
     'bind' => [],
     'bindTypes => [],
     'order' => '',
     'limit' => 10,
     'offset' => 5,
     'group' => 'name, status',
     'for_updated' => false,
     'shared_lock' => false,
     'cache' => [
         'lifetime' => 3600,
         'key' => 'my-find-key'
     ],
     'hydration' => null
 ]

public static mixed sum ([array $parameters])

Вычисляет сумму по столбцу для результирующего набора строк, соответствующих заданным условиям

<?php

// Сколько стоят все роботы?
$sum = Robots::sum(
    [
        "column" => "price",
    ]
);

echo "Общая стоимость роботов составляет ", $sum, "\n";

// Сколько стоят механические роботы?
$sum = Robots::sum(
    [
        "type = 'mechanical'",
        "column" => "price",
    ]
);

echo "Общая стоимость механических роботов  ", $sum, "\n";

public static mixed maximum ([array $parameters])

Возвращает максимальное значение столбца для результирующего набора строк, соответствующих указанным условиям

<?php

// Каков максимальный идентификатор робота?
$id = Robots::maximum(
    [
        "column" => "id",
    ]
);

echo "Максимальный идентификатор робота: ", $id, "\n";

// Каков максимальный идентификатор механических роботов?
$sum = Robots::maximum(
    [
        "type = 'mechanical'",
        "column" => "id",
    ]
);

echo "Максимальный идентификатор робота механических роботов ", $id, "\n";

public static mixed minimum ([array $parameters])

Возвращает минимальное значение столбца для результирующего набора строк, соответствующих указанным условиям

<?php

// Каков минимальный идентификатор робота?
$id = Robots::minimum(
    [
        "column" => "id",
    ]
);

echo "Минимальный идентификатор робота: ", $id;

// Каков минимальный идентификатор механических роботов?
$sum = Robots::minimum(
    [
        "type = 'mechanical'",
        "column" => "id",
    ]
);

echo "Минимальный идентификатор робота механических роботов ", $id;

public static double average ([array $parameters])

Возвращает среднее значение для столбца для набора результатов, соответствующих указанным условиям

<?php

// Какова средняя цена роботов?
$average = Robots::average(
    [
        "column" => "price",
    ]
);

echo "Средняя цена ", $average, "\n";

// Какова средняя цена механических роботов?
$average = Robots::average(
    [
        "type = 'mechanical'",
        "column" => "price",
    ]
);

echo "Средняя цена механических роботов ", $average, "\n";

public fireEvent (mixed $eventName)

Вызывает событие, неявно вызывает поведение и прослушиватели в менеджере событий.

public fireEventCancel (mixed $eventName)

Запускает событие, неявно вызывает поведение и прослушиватели в диспетчере событий. Этот метод останавливается, если один из обратных вызовов/слушателей возвращает логическое значение false

protected _cancelOperation ()

Отменить текущую операцию

public appendMessage (Phalcon\Mvc\Model\MessageInterface $message)

Добавляет настраиваемое сообщение в процесс проверки

<?php

use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Message as Message;

class Robots extends Model
{
    public function beforeSave()
    {
        if ($this->name === "Peter") {
            $message = new Message(
                "Извините, но робота нельзя назвать Питером."
            );

            $this->appendMessage($message);
        }
    }
}

protected validate (Phalcon\ValidationInterface $validator)

Выполняет валидаторы при каждом вызове валидации

<?php

use Phalcon\Mvc\Model;
use Phalcon\Validation;
use Phalcon\Validation\Validator\ExclusionIn;

class Subscriptors extends Model
{
    public function validation()
    {
        $validator = new Validation();

        $validator->add(
            "status",
            new ExclusionIn(
                [
                    "domain" => [
                        "A",
                        "I",
                    ],
                ]
            )
        );

        return $this->validate($validator);
    }
}

public validationHasFailed ()

Проверztn, сгенерировал ли процесс проверки какие-либо сообщения

<?php

use Phalcon\Mvc\Model;
use Phalcon\Validation;
use Phalcon\Validation\Validator\ExclusionIn;

class Subscribers extends Model
{
    public function validation()
    {
        $validator = new Validation();

        $validator->validate(
            "status",
            new ExclusionIn(
                [
                    "domain" => [
                        "A",
                        "I",
                    ],
                ]
            )
        );

        return $this->validate($validator);
    }
}

public getMessages ([mixed $filter])

Возвращает массив сообщений проверки

<?php

$robot = new Robots();

$robot->type = "mechanical";
$robot->name = "Astro Boy";
$robot->year = 1952;

if ($robot->save() === false) {
    echo "Мы не можем сейчас хранить роботов. ";

    $messages = $robot->getMessages();

    foreach ($messages as $message) {
        echo $message;
    }
} else {
    echo "Отлично, новый робот был успешно спасен!";
}

final protected _checkForeignKeysRestrict ()

Читает отношения «принадлежит» и проверяет виртуальные внешние ключи при вставке или обновлении записей, чтобы убедиться, что вставленные/обновленные значения присутствуют в связанной сущности

final protected _checkForeignKeysReverseCascade ()

Читает как «имеет много», так и «имеет один» и проверяет виртуальные внешние ключи (каскад) при удалении записей

final protected _checkForeignKeysReverseRestrict ()

Считывает отношения "имеет много" и "имеет один" и проверяет виртуальные внешние ключи (ограничить) при удалении записей

protected _preSave (Phalcon\Mvc\Model\MetaDataInterface $metaData, mixed $exists, mixed $identityField)

Выполняет внутренние обработчики перед сохранением записи

protected _postSave (mixed $success, mixed $exists)

Выполняет внутренние события после сохранения записи

protected boolean _doLowInsert (Phalcon\Mvc\Model\MetaDataInterface $metaData, Phalcon\Db\AdapterInterface $connection, string | array $table, boolean | string $identityField)

Отправляет инструкцию INSERT SQL перед сборкой в систему реляционных баз данных

protected boolean _doLowUpdate (Phalcon\Mvc\Model\MetaDataInterface $metaData, Phalcon\Db\AdapterInterface $connection, string | array $table)

Отправляет инструкцию SQL UPDATE перед сборкой в систему реляционных баз данных

protected boolean _preSaveRelatedRecords (Phalcon\Db\AdapterInterface $connection, Phalcon\Mvc\ModelInterface $related)

Сохраняет связанные записи, которые необходимо сохранить перед сохранением основной записи

protected boolean _postSaveRelatedRecords (Phalcon\Db\AdapterInterface $connection, Phalcon\Mvc\ModelInterface $related)

Сохраняет связанные записи, назначенные в отношениях имеет-один/имеет-много

public boolean save ([array $data], [array $whiteList])

Вставляет или обновляет экземпляр модели. Возвращение true на успех или false в противном случае.

<?php

// Создание нового робота
$robot = new Robots();

$robot->type = "mechanical";
$robot->name = "Astro Boy";
$robot->year = 1952;

$robot->save();

// Обновление имени робота
$robot = Robots::findFirst("id = 100");

$robot->name = "Biomass";

$robot->save();

public create ([mixed $data], [mixed $whiteList])

Вставляет экземпляр модели. Если экземпляр уже существует в сохраняемости, он выдаст исключение Returned, true при успешном выполнении или false в противном случае.

<?php

// Создание нового робота
$robot = new Robots();

$robot->type = "mechanical";
$robot->name = "Astro Boy";
$robot->year = 1952;

$robot->create();

// Передача массива для создания
$robot = new Robots();

$robot->create(
    [
        "type" => "mechanical",
        "name" => "Astro Boy",
        "year" => 1952,
    ]
);

public update ([mixed $data], [mixed $whiteList])

Обновляет экземпляр модели. Если экземпляр не существует в сохраняемости, он выдаст исключение Returned true при успешном выполнении или false в противном случае.

<?php

// Обновление имени робота
$robot = Robots::findFirst("id = 100");

$robot->name = "Biomass";

$robot->update();

public delete ()

Удаляет экземпляр модели. Возвращение true на успех или false в противном случае.

<?php

$robot = Robots::findFirst("id=100");

$robot->delete();

$robots = Robots::find("type = 'mechanical'");

foreach ($robots as $robot) {
    $robot->delete();
}

public getOperationMade ()

Возвращает тип последней операции, выполняемой ORM возвращает одну из констант класса OP_*

public refresh ()

Обновляет атрибуты модели, повторно запрашивая запись из базы данных

public skipOperation (mixed $skip)

Пропускает текущую операцию, приводящую к успешному состоянию

public readAttribute (mixed $attribute)

Читает значение атрибута по его имени

<?php

echo $robot->readAttribute("name");

public writeAttribute (mixed $attribute, mixed $value)

Записывает значение атрибута по имени

<?php

$robot->writeAttribute("name", "Rosey");

protected skipAttributes (array $attributes)

Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного оператора INSERT / UPDATE

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->skipAttributes(
            [
                "price",
            ]
        );
    }
}

protected skipAttributesOnCreate (array $attributes)

Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного оператора INSERT

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->skipAttributesOnCreate(
            [
                "created_at",
            ]
        );
    }
}

protected skipAttributesOnUpdate (array $attributes)

Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного оператора UPDATE

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->skipAttributesOnUpdate(
            [
                "modified_in",
            ]
        );
    }
}

protected allowEmptyStringValues (array $attributes)

Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного оператора UPDATE

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->allowEmptyStringValues(
            [
                "name",
            ]
        );
    }
}

protected hasOne (mixed $fields, mixed $referenceModel, mixed $referencedFields, [mixed $options])

Настройка отношения 1-1 между двумя моделями

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasOne("id", "RobotsDescription", "robots_id");
    }
}

Использование нескольких полей:

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasOne(["id", "type"], "RobotParts", ["robots_id", "robots_type"]);
    }
}

Использование опций:

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasOne(
            "id", 
            "RobotParts", 
            "robots_id",
            [
                "reusable" => true,    // кешировать результаты этого отношения
                "alias"    => "parts", // Псевдоним отношений
            ]
        );
    }
}

Использование условных выражений:

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasOne(
            "id", 
            "RobotParts", 
            "robots_id",
            [
                "reusable" => true,           // кешировать результаты этого отношения
                "alias"    => "partsTypeOne", // Псевдоним отношений
                "params"   => [               // Действует как фильтр
                    "conditions" => "type = :type:",
                    "bind"       => [
                        "type" => 1,
                    ],
                ],
            ]
        );
    }
}

protected belongsTo (mixed $fields, mixed $referenceModel, mixed $referencedFields, [mixed $options])

Установите обратную связь 1-1 или n-1 между двумя моделями

<?php

class RobotsParts extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->belongsTo("robots_id", "Robots", "id");
    }
}

protected hasMany (mixed $fields, mixed $referenceModel, mixed $referencedFields, [mixed $options])

Настройка отношения 1-n между двумя моделями

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasMany("id", "RobotsParts", "robots_id");
    }
}

protected Phalcon\Mvc\Model\Relation hasManyToMany (string | array $fields, string $intermediateModel, string | array $intermediateFields, string | array $intermediateReferencedFields, mixed $referenceModel, string | array $referencedFields, [array $options])

Установите отношение n-n между двумя моделями, используя промежуточное соотношение

<?php

class Robots extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        // Установите отношение «многие ко многим» к частям через RobotsParts
        $this->hasManyToMany(
            "id",
            "RobotsParts",
            "robots_id",
            "parts_id",
            "Parts",
            "id"
        );
    }
}

public addBehavior (Phalcon\Mvc\Model\BehaviorInterface $behavior)

Настройка поведения в модели

<?php

use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Behavior\Timestampable;

class Robots extends Model
{
    public function initialize()
    {
        $this->addBehavior(
            new Timestampable(
               [
                   "onCreate" => [
                        "field"  => "created_at",
                        "format" => "Y-m-d",
                       ],
                ]
            )
        );
    }
}

protected keepSnapshots (mixed $keepSnapshot)

Устанавливает, должна ли модель сохранять исходный снимок записи в памяти

<?php

use Phalcon\Mvc\Model;

class Robots extends Model
{
    public function initialize()
    {
        $this->keepSnapshots(true);
    }
}

public setSnapshotData (array $data, [array $columnMap])

Устанавливает данные моментального снимка записи. Этот метод используется внутренне для установки данных моментального снимка, когда модель была настроена для хранения данных моментальных снимков

public hasSnapshotData ()

Проверяет, имеет ли объект внутренние данные моментального снимка

public getSnapshotData ()

Возвращает внутренние данные моментального снимка

public getOldSnapshotData ()

Возвращает внутренние старые снимки

public hasChanged ([string | array $fieldName], [boolean $allFields])

Проверяет, изменился ли какой-либо атрибут. Это работает только в том случае, если модель хранит снимки данных

<?php

$robot = new Robots();

$robot->type = "mechanical";
$robot->name = "Astro Boy";
$robot->year = 1952;

$robot->create();
$robot->type = "hydraulic";
$hasChanged = $robot->hasChanged("type"); // returns true
$hasChanged = $robot->hasChanged(["type", "name"]); // returns true
$hasChanged = $robot->hasChanged(["type", "name", true]); // returns false

public hasUpdated ([string | array $fieldName], [mixed $allFields])

Проверяет, был ли обновлен определенный атрибут. Это работает только в том случае, если модель хранит снимки данных

public getChangedFields ()

Возвращает список измененных значений.

<?php

$robots = Robots::findFirst();
print_r($robots->getChangedFields()); // []

$robots->deleted = 'Y';

$robots->getChangedFields();
print_r($robots->getChangedFields()); // ["deleted"]

public getUpdatedFields ()

Возвращает список обновленных значений.

<?php

$robots = Robots::findFirst();
print_r($robots->getChangedFields()); // []

$robots->deleted = 'Y';

$robots->getChangedFields();
print_r($robots->getChangedFields()); // ["deleted"]
$robots->save();
print_r($robots->getChangedFields()); // []
print_r($robots->getUpdatedFields()); // ["deleted"]

protected useDynamicUpdate (mixed $dynamicUpdate)

Устанавливает, должна ли модель использовать динамическое обновление вместо обновления всего поля

<?php

use Phalcon\Mvc\Model;

class Robots extends Model
{
    public function initialize()
    {
        $this->useDynamicUpdate(true);
    }
}

public Phalcon\Mvc\Model\ResultsetInterface getRelated (string $alias, [array $arguments])

Возвращает связанные записи на основе определенных отношений

<?php

// Получает данные отношений с именем «parts»
$parts = $robot->getRelated('parts');

// Получает данные о взаимоотношениях с именем «parts», отсортированные по убыванию по имени
$parts = $robot->getRelated('parts', ['order' => 'name DESC']);

// Получает данные отношения с именем «parts», отфильтрованные
$parts = $robot->getRelated('parts', ['conditions' => 'type = 1']);

$parts = $robot->getRelated(
    'parts', 
    [
        'conditions' => 'type = :type:',
        'bind'       => [
            'type' => 1,
        ]
    ]
);

protected mixed _getRelatedRecords (string $modelName, string $method, array $arguments)

Возвращает связанные записи определенных отношений в зависимости от имени метода

final protected static Phalcon\Mvc\ModelInterface | Phalcon\Mvc\ModelInterface | boolean _invokeFinder (string $method, array $arguments)

Попробует проверить, должен ли запрос вызывать finder

public mixed __call (string $method, array $arguments)

Обрабатывает вызовы методов, когда метод не реализован

public static mixed __callStatic (string $method, array $arguments)

Обрабатывает вызовы методов, когда статический метод не реализован

public __set (string $property, mixed $value)

Магический метод для присвоения значений модели

final protected string _possibleSetter (string $property, mixed $value)

Проверяет и пытайтся использовать возможный сеттер.

public Phalcon\Mvc\Model\Resultset | Phalcon\Mvc\Model __get (string $property)

Магический метод для получения связанных записей с использованием псевдонима отношения как свойства

public __isset (mixed $property)

Магический метод проверки правильности отношения свойства

public serialize ()

Сериализует объект, игнорирующий соединения, службы, связанные объекты или статические свойства

public unserialize (mixed $data)

Ансериализует объект из сериализованной строки

public dump ()

Возвращает простое представление объекта, которое можно использовать с var_dump

<?php

var_dump(
    $robot->dump()
);

public array toArray ([array $columns])

Возвращает экземпляр в виде представления массива

<?php

print_r(
    $robot->toArray()
);

public array jsonSerialize ()

Сериализует объект для json_encode

<?php

echo json_encode($robot);

public static setup (array $options)

Включает/отключает опции в ORM

public reset ()

Сбросить данные экземпляра модели