CakePHP : Manual/Developing/Models/Attributes

Переменные модели


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


useDbConfig


Свойство useDbConfig – это строка, которая определяет имя соединения с базой данных, которое используется для связывания вашего класса модели и соответствующей таблицы базы данных. Вы можете присвоить этому параметру любое имя соединения, определенное в файле конфигурации базы данных (/app/config/database.php).

По умолчанию useDbConfig = 'default'.

Пример использования:

<?
class Example extends AppModel {
   var 
$useDbConfig 'alternate';
}
?>



useTable


Свойство useTable определяет имя таблицы базы данных. По умолчанию, модель использует имя класса модели, написанное строчными буквами во множественном числе. Присваивайте этому параметру имя таблицы, если оно отличается от имени по умолчанию, или устанавливайте в false, если вы хотите, чтобы модель не использовала таблицу вообще.

<?
class Example extends AppModel {
   var 
$useTable false// Эта модель не использует таблицу базы данных
}
?>


<?
class Example extends AppModel {
   var 
$useTable 'exmp'// Эта модель использует таблицу 'exmp'
}
?>



tablePrefix


Имя префикса таблицы, используемое для модели. Префикс таблицы изначально определяется в /app/config/database.php. По умолчанию, префикса нет. Вы можете установить префикс, определив переменную модели tablePrefix.

Пример использования:

<?
class Example extends AppModel {
   var 
$tablePrefix 'alternate_'// будет использовать 'alternate_examples'
}
?>



primaryKey


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

Пример использования:

<?
class Example extends AppModel {
    var 
$primaryKey 'example_id'// example_id - имя поля таблицы БД
}
?>



displayField


Переменная displayField определяет какое поле таблицы будет использоваться в качестве метки (label) для записи. Метка используется в скаффолдинге и в вызовах find('list'). По умолчанию, модель будет использовать имя или заголовок (title).

Например, для использования поля 'username':

<?
class User extends AppModel {
   var 
$displayField 'username';
}
?>


Множество имен полей не может быть собрано в одно поле для вывода displayField. 
Т.е., вы не можете определить array('first_name', 'last_name') как displayField.



recursive


Свойство 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.



order


Сортировка по умолчанию для данных, возвращаемых 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");
?>



data


Контейнер для выбранных данных модели. Данные возвращенные из класса модели, обычно используются также, как и данные после вызова find(). Внутри колбэков вам может понадобиться получить доступ к данным, хранящимся в $data.


_schema


Содержит метаданные, описывающие поля таблицы модели.
Каждое поле описывается следующими параметрами:



validate


Эта переменная содержит правила, которые позволяют модели производить валидацию данных перед сохранением.
Индексы (их имена совпадают с именами полей) содержат регулярные выражения, позволяющие модели проверять соответствие.

Замечание: Нет необходимости вызывать validate() перед save(), т.к. save() автоматически проверит ваши данные непосредственно перед сохранением.

Для получения дополнительной информации о валидации читайте далее в руководстве главу «Валидация данных».


name


Как вы читали ранее, переменная name необходима для пользователей PHP4 и содержит имя модели.

Пример использования:

<?
class Example extends AppModel {
   var 
$name 'Example';
}
?>



cacheQueries


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



<< Колбэки | Пользовательские функции и свойства >>