Spec-Zone.ru › Phalcon 3

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

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

Источник на GitHub

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

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

Phalcon\Mvc\Model — первый ORM, написанный на языках Zephir/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: ";

    $messages = $robot->getMessages();

    foreach ($messages as $message) {
        echo message;
    }
} else {
    echo "Great, a new robot was saved successfully!";
}

Константы

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)

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

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 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])

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

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

// Assign by db row, column map needed
$robot->assign(
    $dbRow,
    [
        "db_type" => "type",
        "db_name" => "name",
        "db_year" => "year",
    ]
);

// Allow assign only name and year
$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])

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

$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])

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

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

public static find ([mixed $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(
    [
        "type = 'virtual'",
        "order" => "name",
    ]
);

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

// Get first 100 virtual robots ordered by name
$robots = Robots::find(
    [
        "type = 'virtual'",
        "order" => "name",
        "limit" => 100,
    ]
);

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

public static static findFirst ([string | 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(
    [
        "type = 'virtual'",
        "order" => "name",
    ]
);

echo "The first virtual robot name is ", $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])

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

// 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 mixed sum ([array $parameters])

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

// How much are all robots?
$sum = Robots::sum(
    [
        "column" => "price",
    ]
);

echo "The total price of robots is ", $sum, "\n";

// How much are mechanical robots?
$sum = Robots::sum(
    [
        "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(
    [
        "column" => "id",
    ]
);

echo "The maximum robot id is: ", $id, "\n";

// What is the maximum id of mechanical robots?
$sum = Robots::maximum(
    [
        "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(
    [
        "column" => "id",
    ]
);

echo "The minimum robot id is: ", $id;

// What is the minimum id of mechanical robots?
$sum = Robots::minimum(
    [
        "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(
    [
        "column" => "price",
    ]
);

echo "The average price is ", $average, "\n";

// What's the average price of mechanical robots?
$average = Robots::average(
    [
        "type = 'mechanical'",
        "column" => "price",
    ]
);

echo "The average price of mechanical robots is ", $average, "\n";

public fireEvent (mixed $eventName)

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

public fireEventCancel (mixed $eventName)

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

protected _cancelOperation ()

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

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

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

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(
                "Sorry, but a robot cannot be named Peter"
            );

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

protected validate (Phalcon\ValidationInterface $validator)

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

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 ()

Проверяет, сгенерированы ли сообщения об ошибках в процессе валидации

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

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

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

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

public getMessages ([mixed $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 ";

    $messages = $robot->getMessages();

    foreach ($messages as $message) {
        echo $message;
    }
} else {
    echo "Great, a new robot was saved successfully!";
}

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)

Отправляет предварительно сгенерированное SQL-утверждение INSERT в реляционную базу данных

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.

// 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();

public create ([mixed $data], [mixed $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(
    [
        "type" => "mechanical",
        "name" => "Astro Boy",
        "year" => 1952,
    ]
);

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

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

// Updating a robot name
$robot = Robots::findFirst("id = 100");

$robot->name = "Biomass";

$robot->update();

public delete ()

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

$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)

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

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

public writeAttribute (mixed $attribute, mixed $value)

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

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

protected skipAttributes (array $attributes)

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

<?php

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

protected skipAttributesOnCreate (array $attributes)

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

<?php

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

protected skipAttributesOnUpdate (array $attributes)

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

<?php

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

protected allowEmptyStringValues (array $attributes)

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

<?php

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

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

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

<?php

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

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

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

<?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])

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

<?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])

Настройка отношения многие-ко-многим между двумя моделями через промежуточную модель

<?php

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",
        );
    }
}

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 hasChanged ([string | array $fieldName])

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

public getChangedFields ()

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

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

$robots->deleted = 'Y';

$robots->getChangedFields();
print_r($robots->getChangedFields()); // ["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])

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

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

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

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

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

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

var_dump(
    $robot->dump()
);

public array toArray ([array $columns])

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

print_r(
    $robot->toArray()
);

public array jsonSerialize ()

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

echo json_encode($robot);

public static setup (array $options)

Включает/отключает параметры в ORM

public reset ()

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

© 2011–2017 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Model.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API