Переменные модели позволяют вам определять свойства, которые могут изменить поведение модели по умолчанию.
Свойство useDbConfig – это строка, которая определяет имя соединения с базой данных, которое используется для связывания вашего класса модели и соответствующей таблицы базы данных. Вы можете присвоить этому параметру любое имя соединения, определенное в файле конфигурации базы данных (/app/config/database.php).
По умолчанию useDbConfig = 'default'.
Пример использования:
<?
class Example extends AppModel {
var $useDbConfig = 'alternate';
}
?>
Свойство useTable определяет имя таблицы базы данных. По умолчанию, модель использует имя класса модели, написанное строчными буквами во множественном числе. Присваивайте этому параметру имя таблицы, если оно отличается от имени по умолчанию, или устанавливайте в false, если вы хотите, чтобы модель не использовала таблицу вообще.
<?
class Example extends AppModel {
var $useTable = false; // Эта модель не использует таблицу базы данных
}
?>
<?
class Example extends AppModel {
var $useTable = 'exmp'; // Эта модель использует таблицу 'exmp'
}
?>
Имя префикса таблицы, используемое для модели. Префикс таблицы изначально определяется в /app/config/database.php. По умолчанию, префикса нет. Вы можете установить префикс, определив переменную модели tablePrefix.
Пример использования:
<?
class Example extends AppModel {
var $tablePrefix = 'alternate_'; // будет использовать 'alternate_examples'
}
?>
Каждая таблица, как правило, имеет первичный ключ, id. Вы можете указать какое поле таблицы модель будет использовать как первичный ключ. Это применяется, когда вы настраиваете CakePHP для работы с уже существующей таблицей базы данных.
Пример использования:
<?
class Example extends AppModel {
var $primaryKey = 'example_id'; // example_id - имя поля таблицы БД
}
?>
Переменная displayField определяет какое поле таблицы будет использоваться в качестве метки (label) для записи. Метка используется в скаффолдинге и в вызовах find('list'). По умолчанию, модель будет использовать имя или заголовок (title).
Например, для использования поля 'username':
<?
class User extends AppModel {
var $displayField = 'username';
}
?>
Множество имен полей не может быть собрано в одно поле для вывода displayField.
Т.е., вы не можете определить array('first_name', 'last_name') как displayField.
Свойство recursive определяет, как глубоко CakePHP должен заходить, при выборке данных ассоциированных моделей с помощью методов find(), findAll() и read().
Допустим, в вашем приложении Groups belong to domain, который have many Users, которые в свою очередь have many Articles. Вы можете присвоить $recursive различные значения, в зависимости от того, какой объем информации вы хотите получить после вызова $this->Group->find():
Глубина | Описание |
-1 | Кейк выберет только данные Group, без связей |
0 | Кейк выберет данные Group и её domain |
1 | Кейк выберет данные Group, её domain и ассоциированных пользователей Users |
2 | Кейк выберет данные Group, её domain и ассоциированных пользователей Users, и ассоциированных статей Articles |
Присваивайте параметру значение не более того, что необходимо. Тогда ваше приложение не будет работать медленно при выборке данных.
Если вы хотите объединить $recursive с функциональностью полей, то вам необходимо
вручную добавить поля, содержащие требуемые внешние ключи в массив полей.
В примере выше, это означает добавить domain_id.
Сортировка по умолчанию для данных, возвращаемых find операциями. Возможные значения:
<?
$order = "field"
$order = "Model.field";
$order = "Model.field asc";
$order = "Model.field ASC";
$order = "Model.field DESC";
$order = array("Model.field" => "asc", "Model.field2" => "DESC");
?>
Контейнер для выбранных данных модели. Данные возвращенные из класса модели, обычно используются также, как и данные после вызова find(). Внутри колбэков вам может понадобиться получить доступ к данным, хранящимся в $data.
Содержит метаданные, описывающие поля таблицы модели.
Каждое поле описывается следующими параметрами:
Эта переменная содержит правила, которые позволяют модели производить валидацию данных перед сохранением.
Индексы (их имена совпадают с именами полей) содержат регулярные выражения, позволяющие модели проверять соответствие.
Замечание: Нет необходимости вызывать validate() перед save(), т.к. save() автоматически проверит ваши данные непосредственно перед сохранением.
Для получения дополнительной информации о валидации читайте далее в руководстве главу «Валидация данных».
Как вы читали ранее, переменная name необходима для пользователей PHP4 и содержит имя модели.
Пример использования:
<?
class Example extends AppModel {
var $name = 'Example';
}
?>
Если переменная установлена в true, то данные, выбранные моделью во время одного запроса, кэшируются. Они кэшируются в память и только на время выполнения этого запроса. Любые дублирующие запросы для тех же данных выгружаются кэшем.
<< Колбэки | Пользовательские функции и свойства >>