Абстрактный класс Phalcon\Mvc\Model
реализует Phalcon\Mvc\ModelInterface, Phalcon\Mvc\Model\ResultInterface, Phalcon\DI\InjectionAwareInterface, Serializable
Phalcon\Mvc\Model соединяет бизнес-объекты и таблицы базы данных, чтобы создать сохраняемую предметную модель, где логика и данные представлены в одном оболочке. Это реализация объектно-реляционного отображения (ORM). Модель представляет информацию (данные) приложения и правила для обработки этих данных. Модели в первую очередь используются для управления правилами взаимодействия с соответствующей таблицей базы данных. В большинстве случаев каждой таблице в вашей базе данных будет соответствовать одна модель в вашем приложении. Большая часть бизнес-логики вашего приложения будет сосредоточена в моделях. Phalcon\Mvc\Model является первой ORM, написанной на языке C для PHP, предоставляя разработчикам высокую производительность при взаимодействии с базами данных, при этом она также проста в использовании.
$robot = new Robots();
$robot->type = 'mechanical';
$robot->name = 'Astro Boy';
$robot->year = 1952;
if ($robot->save() == false) {
echo "Umh, We can store robots: ";
foreach ($robot->getMessages() as $message) {
echo $message;
}
} else {
echo "Great, a new robot was saved successfully!";
}
Константы
целое число OP_NONE
целое число OP_CREATE
целое число OP_UPDATE
целое число OP_DELETE
целое число DIRTY_STATE_PERSISTENT
целое число DIRTY_STATE_TRANSIENT
целое число DIRTY_STATE_DETACHED
Методы
final public __construct ([Phalcon\DiInterface $dependencyInjector], [Phalcon\Mvc\Model\ManagerInterface $modelsManager])
Конструктор Phalcon\Mvc\Model
public setDI (Phalcon\DiInterface $dependencyInjector)
Устанавливает контейнер инъекции зависимостей
public Phalcon\DiInterface getDI ()
Возвращает контейнер инъекции зависимостей
protected setEventsManager ()
Устанавливает менеджер событий
protected Phalcon\Events\ManagerInterface getEventsManager ()
Возвращает менеджер событий
public Phalcon\Mvc\Model\MetaDataInterface getModelsMetaData ()
Возвращает службу метаданных моделей, связанную с экземпляром сущности
public Phalcon\Mvc\Model\ManagerInterface getModelsManager ()
Возвращает менеджер моделей, связанный с экземпляром сущности
public Phalcon\Mvc\Model setTransaction (Phalcon\Mvc\Model\TransactionInterface $transaction)
Устанавливает транзакцию, связанную с экземпляром модели
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("Robot part cannot be saved");
}
$transaction->commit();
} catch (TxFailed $e) {
echo 'Failed, reason: ', $e->getMessage();
}
protected Phalcon\Mvc\Model setSource (string $source)
Устанавливает имя таблицы, к которой должна быть применена модель
public string getSource ()
Возвращает имя таблицы, сопоставленной в модели
protected Phalcon\Mvc\Model setSchema (string $schema)
Устанавливает имя схемы, в которой расположена сопоставленная таблица
public string getSchema ()
Возвращает имя схемы, в которой расположена сопоставленная таблица
public Phalcon\Mvc\Model setConnectionService (string $connectionService)
Устанавливает имя сервиса подключения DependencyInjection
public Phalcon\Mvc\Model setReadConnectionService (string $connectionService)
Устанавливает имя сервиса подключения DependencyInjection, используемого для чтения данных
public Phalcon\Mvc\Model setWriteConnectionService (string $connectionService)
Устанавливает имя сервиса подключения DependencyInjection, используемого для записи данных
public string getReadConnectionService ()
Возвращает имя сервиса подключения DependencyInjection, используемого для чтения данных, связанных с моделью
public string getWriteConnectionService ()
Возвращает имя сервиса подключения DependencyInjection, используемого для записи данных, связанных с моделью
public Phalcon\Mvc\Model setDirtyState (int $dirtyState)
Устанавливает состояние "изменённости" объекта, используя одну из констант DIRTY_STATE_*
public int getDirtyState ()
Возвращает одну из констант DIRTY_STATE_*, указывающую, существует ли запись в базе данных или нет
public Phalcon\Db\AdapterInterface getReadConnection ()
Получает соединение, используемое для чтения данных для модели
public Phalcon\Db\AdapterInterface getWriteConnection ()
Получает соединение, используемое для записи данных в модель
public Phalcon\Mvc\Model assign (array $data, [array $columnMap])
Присваивает значения модели из массива
$robot->assign(array( 'type' => 'mechanical', 'name' => 'Astro Boy', 'year' => 1952 ));
public static Phalcon\Mvc\Model cloneResultMap (Phalcon\Mvc\Model $base, array $data, array $columnMap, [int $dirtyState], [boolean $keepSnapshots])
Присваивает значения модели из массива, возвращая новую модель.
$robot = \Phalcon\Mvc\Model::cloneResultMap(new Robots(), array( 'type' => 'mechanical', 'name' => 'Astro Boy', 'year' => 1952 ));
public static mixed cloneResultMapHydrate (array $data, array $columnMap, int $hydrationMode)
Возвращает гидратированный результат на основе данных и карты столбцов
public static Phalcon\Mvc\Model cloneResult (Phalcon\Mvc\Model $base, array $data, [int $dirtyState])
Присваивает значения модели из массива, возвращая новую модель
$robot = Phalcon\Mvc\Model::cloneResult(new Robots(), array( 'type' => 'mechanical', 'name' => 'Astro Boy', 'year' => 1952 ));
public static Phalcon\Mvc\Model\ResultsetInterface find ([array $parameters])
Позволяет запросить набор записей, соответствующих указанным условиям
//How many robots are there?
$robots = Robots::find();
echo "There are ", count($robots), "\n";
//How many mechanical robots are there?
$robots = Robots::find("type='mechanical'");
echo "There are ", count($robots), "\n";
//Get and print virtual robots ordered by name
$robots = Robots::find(array("type='virtual'", "order" => "name"));
foreach ($robots as $robot) {
echo $robot->name, "\n";
}
//Get first 100 virtual robots ordered by name
$robots = Robots::find(array("type='virtual'", "order" => "name", "limit" => 100));
foreach ($robots as $robot) {
echo $robot->name, "\n";
}
public static Phalcon\Mvc\Model findFirst ([array $parameters])
Позволяет запросить первую запись, соответствующую указанным условиям
//What's the first robot in robots table?
$robot = Robots::findFirst();
echo "The robot name is ", $robot->name;
//What's the first mechanical robot in robots table?
$robot = Robots::findFirst("type='mechanical'");
echo "The first mechanical robot name is ", $robot->name;
//Get first virtual robot ordered by name
$robot = Robots::findFirst(array("type='virtual'", "order" => "name"));
echo "The first virtual robot name is ", $robot->name;
public static Phalcon\Mvc\Model\Criteria query ([Phalcon\DiInterface $dependencyInjector])
Создаёт критерии для конкретной модели
protected boolean _exists ()
Проверяет, существует ли текущая запись или нет
protected static Phalcon\Mvc\Model\ResultsetInterface _groupResult ()
Генерирует PHQL-запрос SELECT для агрегации
public static int count ([array $parameters])
Позволяет подсчитать количество записей, соответствующих указанным условиям
//How many robots are there?
$number = Robots::count();
echo "There are ", $number, "\n";
//How many mechanical robots are there?
$number = Robots::count("type='mechanical'");
echo "There are ", $number, " mechanical robots\n";
public static double sum ([array $parameters])
Позволяет рассчитать сумму по столбцу, соответствующему заданным условиям
//How much are all robots?
$sum = Robots::sum(array('column' => 'price'));
echo "The total price of robots is ", $sum, "\n";
//How much are mechanical robots?
$sum = Robots::sum(array("type='mechanical'", 'column' => 'price'));
echo "The total price of mechanical robots is ", $sum, "\n";
public static mixed maximum ([array $parameters])
Позволяет получить максимальное значение столбца, соответствующего заданным условиям
//What is the maximum robot id?
$id = Robots::maximum(array('column' => 'id'));
echo "The maximum robot id is: ", $id, "\n";
//What is the maximum id of mechanical robots?
$sum = Robots::maximum(array("type='mechanical'", 'column' => 'id'));
echo "The maximum robot id of mechanical robots is ", $id, "\n";
public static mixed minimum ([array $parameters])
Позволяет получить минимальное значение столбца, соответствующего заданным условиям
//What is the minimum robot id?
$id = Robots::minimum(array('column' => 'id'));
echo "The minimum robot id is: ", $id;
//What is the minimum id of mechanical robots?
$sum = Robots::minimum(array("type='mechanical'", 'column' => 'id'));
echo "The minimum robot id of mechanical robots is ", $id;
public static double average ([array $parameters])
Позволяет рассчитать среднее значение по столбцу, соответствующему заданным условиям
//What's the average price of robots?
$average = Robots::average(array('column' => 'price'));
echo "The average price is ", $average, "\n";
//What's the average price of mechanical robots?
$average = Robots::average(array("type='mechanical'", 'column' => 'price'));
echo "The average price of mechanical robots is ", $average, "\n";
public boolean fireEvent (string $eventName)
Вызывает событие, неявно вызывает поведения и слушатели в менеджере событий
public boolean fireEventCancel (string $eventName)
Вызывает событие, неявным образом вызывает методы и обработчики в диспетчере событий. Этот метод останавливается, если один из обратных вызовов/обработчиков возвращает boolean false.
protected boolean _cancelOperation ()
Отменить текущую операцию
public Phalcon\Mvc\Model appendMessage (Phalcon\Mvc\Model\MessageInterface $message)
Добавляет настраиваемое сообщение в процессе валидации.
use \Phalcon\Mvc\Model\Message as Message;
class Robots extends Phalcon\Mvc\Model
{
public function beforeSave()
{
if ($this->name == 'Peter') {
$message = new Message("Sorry, but a robot cannot be named Peter");
$this->appendMessage($message);
}
}
}
\n protected Phalcon\Mvc\Model validate (Phalcon\Mvc\Model\ValidatorInterface $validator)
Выполняет валидаторы при каждом вызове валидации.
use Phalcon\Mvc\Model\Validator\ExclusionIn as ExclusionIn;
class Subscriptors extends Phalcon\Mvc\Model
{
public function validation()
{
$this->validate(new ExclusionIn(array(
'field' => 'status',
'domain' => array('A', 'I')
)));
if ($this->validationHasFailed() == true) {
return false;
}
}
}
\n public boolean validationHasFailed ()
Проверить, сгенерировал ли процесс валидации какие-либо сообщения.
use Phalcon\Mvc\Model\Validator\ExclusionIn as ExclusionIn;
class Subscriptors extends Phalcon\Mvc\Model
{
public function validation()
{
$this->validate(new ExclusionIn(array(
'field' => 'status',
'domain' => array('A', 'I')
)));
if ($this->validationHasFailed() == true) {
return false;
}
}
}
\n public Phalcon\Mvc\Model\MessageInterface [] getMessages ([unknown $filter])
Возвращает все сообщения валидации.
$robot = new Robots();
$robot->type = 'mechanical';
$robot->name = 'Astro Boy';
$robot->year = 1952;
if ($robot->save() == false) {
echo "Umh, We can't store robots right now ";
foreach ($robot->getMessages() as $message) {
echo $message;
}
} else {
echo "Great, a new robot was saved successfully!";
}
\n protected boolean _checkForeignKeysRestrict ()
Читает отношения «принадлежит» и проверяет виртуальные внешние ключи при вставке или обновлении записей, чтобы убедиться, что вставленные/обновленные значения присутствуют в связанном элементе.
protected boolean _checkForeignKeysReverseRestrict ()
Читает отношения «hasMany» и «hasOne» и проверяет виртуальные внешние ключи (ограничение) при удалении записей.
protected boolean _checkForeignKeysReverseCascade ()
Читает отношения «hasMany» и «hasOne» и проверяет виртуальные внешние ключи (каскадное действие) при удалении записей.
protected boolean _preSave ()
Выполняет внутренние хуки перед сохранением записи.
protected boolean _postSave ()
Выполняет внутренние события после сохранения записи.
protected boolean _doLowInsert ()
Отправляет предварительно составленное SQL-утверждение INSERT в реляционную базу данных.
protected boolean _doLowUpdate ()
Отправляет предварительно составленное SQL-утверждение UPDATE в реляционную базу данных.
protected boolean _preSaveRelatedRecords ()
Сохраняет связанные записи, которые должны быть сохранены перед сохранением главной записи.
protected boolean _postSaveRelatedRecords ()
Сохранить связанные записи, заданные в отношениях «один-ко-многим» / «один-к-одному».
public boolean save ([array $data], [array $whiteList])
Вставляет или обновляет экземпляр модели. Возвращает true при успехе или false в противном случае.
//Creating a new robot
$robot = new Robots();
$robot->type = 'mechanical';
$robot->name = 'Astro Boy';
$robot->year = 1952;
$robot->save();
//Updating a robot name
$robot = Robots::findFirst("id=100");
$robot->name = "Biomass";
$robot->save();
\n public boolean create ([array $data], [array $whiteList])
Вставляет экземпляр модели. Если экземпляр уже существует в хранилище, будет выброшено исключение. Возвращает true при успехе или false в противном случае.
//Creating a new robot
$robot = new Robots();
$robot->type = 'mechanical';
$robot->name = 'Astro Boy';
$robot->year = 1952;
$robot->create();
//Passing an array to create
$robot = new Robots();
$robot->create(array(
'type' => 'mechanical',
'name' => 'Astroy Boy',
'year' => 1952
));
\n public boolean update ([array $data], [array $whiteList])
Обновляет экземпляр модели. Если экземпляр не существует в хранилище, будет выброшено исключение. Возвращает true при успехе или false в противном случае.
//Updating a robot name
$robot = Robots::findFirst("id=100");
$robot->name = "Biomass";
$robot->update();
\n public boolean delete ()
Удаляет экземпляр модели. Возвращает true при успехе или false в противном случае.
$robot = Robots::findFirst("id=100");
$robot->delete();
foreach (Robots::find("type = 'mechanical'") as $robot) {
$robot->delete();
}
\n public int getOperationMade ()
Возвращает тип последней выполненной операции ORM. Возвращает одну из констант класса OP_*.
public refresh ()
Обновляет атрибуты модели, повторно запросив запись из базы данных.
public skipOperation (boolean $skip)
Пропускает текущую операцию, принудительно устанавливая состояние успеха.
public mixed readAttribute (string $attribute)
Считывает значение атрибута по его имени.
echo $robot->readAttribute('name');
\n public writeAttribute (string $attribute, mixed $value)
Записывает значение атрибута по его имени.
$robot->writeAttribute('name', 'Rosey');
\n protected skipAttributes (array $attributes, [boolean $replace])
Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного утверждения INSERT/UPDATE.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->skipAttributes(array('price'));
}
}
\n protected skipAttributesOnCreate (array $attributes, [boolean $replace])
Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного утверждения INSERT.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->skipAttributesOnCreate(array('created_at'));
}
}
\n protected skipAttributesOnUpdate (array $attributes, [boolean $replace])
Устанавливает список атрибутов, которые должны быть пропущены из сгенерированного утверждения UPDATE.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->skipAttributesOnUpdate(array('modified_in'));
}
}
\n public Phalcon\Mvc\Model\Relation hasOne (mixed $fields, string $referenceModel, mixed $referencedFields, [array $options])
Настройка отношения «один-к-одному» между двумя моделями.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->hasOne('id', 'RobotsDescription', 'robots_id');
}
}
\n public Phalcon\Mvc\Model\Relation belongsTo (mixed $fields, string $referenceModel, mixed $referencedFields, [array $options])
Настройка обратного отношения «один-к-одному» между двумя моделями.
class RobotsParts extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->belongsTo('robots_id', 'Robots', 'id');
}
}
\n public Phalcon\Mvc\Model\Relation hasMany (mixed $fields, string $referenceModel, mixed $referencedFields, [array $options])
Настройка отношения «один-ко-многим» между двумя моделями.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->hasMany('id', 'RobotsParts', 'robots_id');
}
}
\n public Phalcon\Mvc\Model\Relation hasManyToMany (string $fields, string $intermediateModel, string $intermediateFields, string $intermediateReferencedFields, unknown $referenceModel, string $referencedFields, [array $options])
Настройка отношения «многие-ко-многим» между двумя моделями через промежуточное отношение.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
//Setup a many-to-many relation to Parts through RobotsParts
$this->hasManyToMany(
'id',
'RobotsParts',
'robots_id',
'parts_id',
'Parts',
'id'
);
}
}
\n public addBehavior (Phalcon\Mvc\Model\BehaviorInterface $behavior)
Настройка поведения в модели.
use Phalcon\Mvc\Model\Behavior\Timestampable;
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->addBehavior(new Timestampable(array(
'onCreate' => array(
'field' => 'created_at',
'format' => 'Y-m-d'
)
)));
}
}
\n protected keepSnapshots (boolean $keepSnapshots)
Устанавливает, должна ли модель сохранять исходную копию записи в памяти.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->keepSnapshots(true);
}
}
\n public setSnapshotData (array $data, [array $columnMap])
Устанавливает данные снимка записи. Этот метод используется для установки данных снимка внутри модели, если модель настроена на сохранение данных снимка.
public boolean hasSnapshotData ()
Проверяет, содержит ли объект внутренние данные снимка.
public array getSnapshotData ()
Возвращает внутренние данные снимка.
public hasChanged ([boolean $fieldName])
Проверка, был ли изменён определённый атрибут. Это работает только если модель сохраняет копии данных.
public array getChangedFields ()
Возвращает список изменённых значений.
protected useDynamicUpdate (boolean $dynamicUpdate)
Устанавливает, должна ли модель использовать динамическое обновление вместо обновления по всем полям.
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->useDynamicUpdate(true);
}
}
\n public Phalcon\Mvc\Model\ResultsetInterface getRelated (string $alias, [array $arguments])
Возвращает связанные записи на основе определённых отношений.
protected mixed _getRelatedRecords ()
Возвращает связанные записи, определяемые отношениями, в зависимости от имени метода.
public mixed __call (string $method, [array $arguments])
Обрабатывает вызовы методов, когда метод не реализован.
public static mixed __callStatic (string $method, [array $arguments])
Обрабатывает вызовы статических методов, когда метод не реализован.
public __set (string $property, mixed $value)
Магический метод для присвоения значений модели.
public Phalcon\Mvc\Model\Resultset __get (string $property)
Магический метод для получения связанных записей, используя алиас отношения в качестве свойства.
public __isset (string $property)
Магический метод для проверки, является ли свойство допустимым отношением.
public string serialize ()
Сериализует объект, игнорируя соединения, сервисы, связанные объекты или статические свойства.
public unserialize (string $data)
Десериализует объект из сериализованной строки.
public array dump ()
Возвращает простое представление объекта, которое можно использовать с var_dump.
var_dump($robot->dump());\n
public array toArray ([array $columns])
Возвращает экземпляр в виде массива.
print_r($robot->toArray());
public static setup (array $options)
Включает/отключает опции в ORM. Доступные опции: events — Включает/выключает глобально внутренние события virtualForeignKeys — Включает/выключает виртуальные внешние ключи columnRenaming — Включает/выключает переименование столбцов notNullValidations — Включает/выключает автоматическую проверку непустых значений exceptionOnFailedSave — Включает/выключает исключение при неудачной сохранении phqlLiterals — Включает/выключает литералы в PHQL. Это повышает безопасность приложений.
© 2011–2016 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/2.0.0/api/Phalcon_Mvc_Model.html