Переменные модели позволяют вам определять свойства, которые могут изменить поведение модели по умолчанию.
Свойство 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 |