CakePHP - Manual/Developing/Models/Attributes /wiki/Manual/Developing/Models/Attributes History/revisions of CakePHP/Manual/Developing/Models/Attributes en-us 2009-03-01 22:51:19 /wiki/Manual/Developing/Models/Attributes/show?time=2009-03-01+22%3A51%3A19 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.developing.models.attributes" href="/wiki/Manual/Developing/Models/Attributes" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Attributes</a> за <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+22%3A51%3A19">2009-03-01 22:51:19</a> и <a href="/wiki/Manual/Developing/Models/Attributes">2009-03-01 22:52:10</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Если переменная установлена в&nbsp;true, то&nbsp;данные, выбранные моделью во&nbsp;время одного запроса, кэшируются. Они&nbsp;кэшируются в&nbsp;память и&nbsp;только на&nbsp;время выполнения этого запроса. Любые дублирующие запросы для&nbsp;тех же&nbsp;данных выгружаются кэшем.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Если переменная установлена в&nbsp;true, то&nbsp;данные, выбранные моделью во&nbsp;время одного запроса, кэшируются. Они&nbsp;кэшируются в&nbsp;память и&nbsp;только на&nbsp;время выполнения этого запроса. Любые дублирующие запросы для&nbsp;тех же&nbsp;данных выгружаются кешем.</div></div> 2009-03-01 21:46:13 /wiki/Manual/Developing/Models/Attributes/show?time=2009-03-01+21%3A46%3A13 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Models/Attributes" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Attributes</a> за <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+21%3A46%3A13">2009-03-01 21:46:13</a> и <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+22%3A51%3A19">2009-03-01 22:51:19</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Контейнер для&nbsp;выбранных данных модели. Данные возвращенные из&nbsp;класса модели, обычно используются также, как&nbsp;и&nbsp;данные после вызова find(). Внутри колбэков вам&nbsp;может понадобиться получить доступ к&nbsp;данным, хранящимся в $data.<br /> <hr noshade="noshade" size="1" /><a name="h818-1"></a><h3>_schema</h3> Содержит метаданные, описывающие поля таблицы модели.<br /> Каждое поле описывается следующими параметрами:<br /> <ul><li> name </li><li> type (integer, string, datetime, etc.) </li><li> null </li><li> default value </li><li> length</li></ul><a name="h818-2"></a><h3>validate</h3> Эта&nbsp;переменная содержит правила, которые позволяют модели производить валидацию данных перед сохранением. <br /> Индексы (их имена совпадают с&nbsp;именами полей) содержат регулярные выражения, позволяющие модели проверять соответствие.<br /> Замечание: Нет&nbsp;необходимости вызывать validate() перед save(), т.к. save() автоматически проверит ваши данные непосредственно перед сохранением.<br /> Для&nbsp;получения дополнительной информации о&nbsp;валидации читайте далее в&nbsp;руководстве главу &laquo;Валидация данных&raquo;.<a name="h818-3"></a><h3>name</h3> Как&nbsp;вы&nbsp;читали ранее, переменная name необходима для&nbsp;пользователей PHP4 и&nbsp;содержит имя&nbsp;модели.<br /> <div class="indent"> var $name = 'Example';</div><a name="h818-4"></a><h3>cacheQueries</h3> Если переменная установлена в&nbsp;true, то&nbsp;данные, выбранные моделью во&nbsp;время одного запроса, кэшируются. Они&nbsp;кэшируются в&nbsp;память и&nbsp;только на&nbsp;время выполнения этого запроса. Любые дублирующие запросы для&nbsp;тех же&nbsp;данных выгружаются кешем.<br /> <span class="missingpage">&lt;&lt; Колбэки</span><a href="/wiki/Callbacks/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Пользовательские функции и&nbsp;свойства &gt;&gt;</span><a href="/wiki/CustomMethods/edit?add=1" title="Создать эту страницу">?</a></div><br /> <b>Удалено:</b><br /> <div class="deletions">Контейнер для&nbsp;выбранных данных модели.</div></div> 2009-03-01 21:33:54 /wiki/Manual/Developing/Models/Attributes/show?time=2009-03-01+21%3A33%3A54 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Models/Attributes" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Attributes</a> за <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+21%3A33%3A54">2009-03-01 21:33:54</a> и <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+21%3A46%3A13">2009-03-01 21:46:13</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Множество имен полей не&nbsp;может быть собрано в&nbsp;одно поле для&nbsp;вывода displayField. <br /> Т.е., вы&nbsp;не можете определить array('first_name', 'last_name') как&nbsp;displayField.<br /> Допустим, в&nbsp;вашем приложении Groups belong to&nbsp;domain, который have many Users, которые в&nbsp;свою очередь have many Articles. Вы&nbsp;можете присвоить $recursive различные значения, в&nbsp;зависимости от&nbsp;того, какой объем информации вы&nbsp;хотите получить после вызова $this-&gt;Group-&gt;find():<br /> <br /> Присваивайте параметру значение не&nbsp;более того, что&nbsp;необходимо. Тогда ваше приложение не&nbsp;будет работать медленно при&nbsp;выборке данных.<br /> Если вы&nbsp;хотите объединить $recursive с&nbsp;функциональностью полей, то&nbsp;вам необходимо <br /> вручную добавить поля, содержащие требуемые внешние ключи в&nbsp;массив полей. <br /> В&nbsp;примере выше, это&nbsp;означает добавить domain_id.<a name="h818-1"></a><h3>order</h3> Сортировка по&nbsp;умолчанию для&nbsp;данных, возвращаемых find операциями. Возможные значения:<br /> $order = &#147;field&#148;<br /> $order = "<span class="missingpage">Model.field</span><a href="/wiki/Model/field/edit?add=1" title="Создать эту страницу">?</a>";<br /> $order = "<span class="missingpage">Model.field</span><a href="/wiki/Model/field/edit?add=1" title="Создать эту страницу">?</a> asc";<br /> $order = "<span class="missingpage">Model.field</span><a href="/wiki/Model/field/edit?add=1" title="Создать эту страницу">?</a> ASC";<br /> $order = "<span class="missingpage">Model.field</span><a href="/wiki/Model/field/edit?add=1" title="Создать эту страницу">?</a> DESC";<br /> $order = array("<span class="missingpage">Model.field</span><a href="/wiki/Model/field/edit?add=1" title="Создать эту страницу">?</a>" =&gt; &#147;asc&#148;, "<span class="missingpage">Model.field&nbsp;2</span><a href="/wiki/Model/field2/edit?add=1" title="Создать эту страницу">?</a>" =&gt; &#147;DESC&#148;);<a name="h818-2"></a><h3>data</h3> Контейнер для&nbsp;выбранных данных модели.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Множество имен полей не&nbsp;может быть собрано в&nbsp;одно поле для&nbsp;вывода displayField. Т.е., вы&nbsp;не можете определить array('first_name', 'last_name') как&nbsp;displayField.<br /> Допустим, в&nbsp;вашем приложении Groups belong to&nbsp;Domain, который have many Users, которые в&nbsp;свою очередь have many Articles. Вы&nbsp;можете присвоить $recursive различные значения, в&nbsp;зависимости от&nbsp;того, какой объем информации вы&nbsp;хотите получить после вызова $this-&gt;Group-&gt;find():<br /></div></div> 2009-03-01 19:51:00 /wiki/Manual/Developing/Models/Attributes/show?time=2009-03-01+19%3A51%3A00 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Models/Attributes" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Attributes</a> за <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+19%3A51%3A00">2009-03-01 19:51:00</a> и <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+21%3A33%3A54">2009-03-01 21:33:54</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Каждая таблица, как&nbsp;правило, имеет первичный ключ, id. Вы&nbsp;можете указать какое поле таблицы модель будет использовать как&nbsp;первичный ключ. Это&nbsp;применяется, когда вы&nbsp;настраиваете <!--notypo-->CakePHP<!--/notypo--> для&nbsp;работы с&nbsp;уже существующей таблицей базы данных.<br /> <div class="indent"><div class="indent">var $primaryKey = 'example_id'; // example_id &ndash; имя&nbsp;поля таблицы БД</div></div><a name="h818-1"></a><h3>displayField</h3> Переменная displayField определяет какое поле таблицы будет использоваться в&nbsp;качестве метки (label) для&nbsp;записи. Метка используется в&nbsp;скаффолдинге и&nbsp;в вызовах find('list'). По&nbsp;умолчанию, модель будет использовать имя&nbsp;или заголовок (title).<br /> Например, для&nbsp;использования поля 'username':<br /> class User extends <span class="missingpage">App&nbsp;Model</span><a href="/wiki/AppModel/edit?add=1" title="Создать эту страницу">?</a> {<br /> <div class="indent"> var $displayField = 'username';</div> Множество имен полей не&nbsp;может быть собрано в&nbsp;одно поле для&nbsp;вывода displayField. Т.е., вы&nbsp;не можете определить array('first_name', 'last_name') как&nbsp;displayField.<a name="h818-2"></a><h3>recursive</h3> Свойство recursive определяет, как&nbsp;глубоко <!--notypo-->CakePHP<!--/notypo--> должен заходить, при&nbsp;выборке данных ассоциированных моделей с&nbsp;помощью методов find(), findAll() и&nbsp;read().<br /> Допустим, в&nbsp;вашем приложении Groups belong to&nbsp;Domain, который have many Users, которые в&nbsp;свою очередь have many Articles. Вы&nbsp;можете присвоить $recursive различные значения, в&nbsp;зависимости от&nbsp;того, какой объем информации вы&nbsp;хотите получить после вызова $this-&gt;Group-&gt;find():<br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell">Глубина </td><td class="usercell">Описание </td></tr> <tr class="userrow"><td class="usercell">-1 </td><td class="usercell">Кейк выберет только данные Group, без&nbsp;связей </td></tr> <tr class="userrow"><td class="usercell"> 0</td><td class="usercell">Кейк выберет данные Group и&nbsp;её domain </td></tr> <tr class="userrow"><td class="usercell"> 1</td><td class="usercell">Кейк выберет данные Group, её domain и&nbsp;ассоциированных пользователей Users </td></tr> <tr class="userrow"><td class="usercell"> 2</td><td class="usercell">Кейк выберет данные Group, её domain и&nbsp;ассоциированных пользователей Users, и&nbsp;ассоциированных статей Articles </td></tr> </table></div></div> 2009-03-01 19:19:07 /wiki/Manual/Developing/Models/Attributes/show?time=2009-03-01+19%3A19%3A07 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Models/Attributes" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Attributes</a> за <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+19%3A19%3A07">2009-03-01 19:19:07</a> и <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+19%3A51%3A00">2009-03-01 19:51:00</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Example&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">AppModel&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$useDbConfig&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'alternate'</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><a name="h818-1"></a><h3>useTable</h3> Свойство useTable определяет имя&nbsp;таблицы базы данных. По&nbsp;умолчанию, модель использует имя&nbsp;класса модели, написанное строчными буквами во&nbsp;множественном числе. Присваивайте этому параметру имя&nbsp;таблицы, если оно&nbsp;отличается от&nbsp;имени по&nbsp;умолчанию, или&nbsp;устанавливайте в&nbsp;false, если вы&nbsp;хотите, чтобы модель не&nbsp;использовала таблицу вообще.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Example&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">AppModel&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$useTable&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;Эта&nbsp;модель&nbsp;не&nbsp;использует&nbsp;таблицу&nbsp;базы&nbsp;данных<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Example&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">AppModel&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$useTable&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'exmp'</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;Эта&nbsp;модель&nbsp;использует&nbsp;таблицу&nbsp;'exmp'<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><a name="h818-2"></a><h3>tablePrefix</h3> Имя&nbsp;префикса таблицы, используемое для&nbsp;модели. Префикс таблицы изначально определяется в&nbsp;/app/config/database.php. По&nbsp;умолчанию, префикса нет. Вы&nbsp;можете установить префикс, определив переменную модели tablePrefix.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Example&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">AppModel&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$tablePrefix&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'alternate_'</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;будет&nbsp;использовать&nbsp;'alternate_examples'<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><a name="h818-3"></a><h3>primaryKey</h3></div></div> 2009-02-12 20:28:48 /wiki/Manual/Developing/Models/Attributes/show?time=2009-02-12+20%3A28%3A48 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Models/Attributes" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Attributes</a> за <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-02-12+20%3A28%3A48">2009-02-12 20:28:48</a> и <a href="/wiki/Manual/Developing/Models/Attributes?time=2009-03-01+19%3A19%3A07">2009-03-01 19:19:07</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><br /> Переменные модели позволяют вам&nbsp;определять свойства, которые могут изменить поведение модели по&nbsp;умолчанию.<br /> <br /> <hr noshade="noshade" size="1" /> <a name="h818-1"></a><h3>useDbConfig</h3> <br /> Свойство useDbConfig &ndash; это&nbsp;строка, которая определяет имя&nbsp;соединения с&nbsp;базой данных, которое используется для&nbsp;связывания вашего класса модели и&nbsp;соответствующей таблицы базы данных. Вы&nbsp;можете присвоить этому параметру любое имя&nbsp;соединения, определенное в&nbsp;файле конфигурации базы данных (/app/config/database.php).<br /> <br /> По&nbsp;умолчанию useDbConfig = 'default'.<br /> <br /> Пример использования:<br /></div></div>