<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>CakePHP - Manual/Developing/Models/Retrieving</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving</link>
<description>History/revisions of CakePHP/Manual/Developing/Models/Retrieving</description>
<language>en-us</language>
<item>
<title>2009-02-17 23:07:27</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-17+23%3A07%3A27</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a name=".manual.developing.models.retrieving" href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+23%3A07%3A27">2009-02-17 23:07:27&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving">2009-02-17 23:11:07&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Внимание: &lt;a name="cakephp" href="http://cake-php.ru/wiki/CakePHP" class="">Cake&amp;nbsp;PHP&lt;/a> будет брать в&amp;nbsp;кавычки численные значения, в&amp;nbsp;зависимости от&amp;nbsp;типа поля в&amp;nbsp;БД.&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Внимание: &lt;!--notypo-->CakePHP&lt;!--/notypo--> будет брать в&amp;nbsp;кавычки численные значения, в&amp;nbsp;зависимости от&amp;nbsp;типа поля в&amp;nbsp;БД.&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-17 23:05:52</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-17+23%3A05%3A52</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+23%3A05%3A52">2009-02-17 23:05:52&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+23%3A07%3A27">2009-02-17 23:07:27&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;br />&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">'fields'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'Product.type'&lt;/span>&lt;span style="color: #007700">,&lt;/span>&lt;span style="color: #DD0000">'MIN(Product.price)&amp;nbsp;as&amp;nbsp;price'&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'group'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'Product.type'&lt;/span>&lt;span style="color: #007700">);&amp;nbsp;&lt;br />&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->(php) &lt;br />
&amp;lt;? &lt;br />
array('fields'=&amp;gt;array('DISTINCT (&lt;span class="missingpage">User.name&lt;/span>&lt;a href="http://cake-php.ru/wiki/User/name/edit?add=1" title="Создать эту страницу">?&lt;/a>) AS&amp;nbsp;my_column_name'), 'order'=&amp;gt;array('&lt;span class="missingpage">User.id&lt;/span>&lt;a href="http://cake-php.ru/wiki/User/id/edit?add=1" title="Создать эту страницу">?&lt;/a> DESC'));&lt;br />
?&amp;gt;&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">'fields'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'Product.type'&lt;/span>&lt;span style="color: #007700">,&lt;/span>&lt;span style="color: #DD0000">'MIN(Product.price)&amp;nbsp;as&amp;nbsp;price'&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'group'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'Product.type'&lt;/span>&lt;span style="color: #007700">);&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">'fields'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'DISTINCT&amp;nbsp;(User.name)&amp;nbsp;AS&amp;nbsp;my_column_name'&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'order'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'User.id&amp;nbsp;DESC'&lt;/span>&lt;span style="color: #007700">));&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-17 22:47:41</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-17+22%3A47%3A41</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+22%3A47%3A41">2009-02-17 22:47:41&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+23%3A05%3A52">2009-02-17 23:05:52&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Параметру $type можно присваивать что-либо из&amp;nbsp;'all', 'first', 'count', 'list', 'neighbors' or&amp;nbsp;'threaded'. 'first' &amp;ndash; значение по&amp;nbsp;умолчанию.&lt;br />
Кейк может также проверить поля на&amp;nbsp;null. В&amp;nbsp;этом примере запрос вернет записи, в&amp;nbsp;которых заголовок поста не&amp;nbsp;null:&lt;br />
array (&amp;laquo;not&amp;raquo; =&amp;gt; array (&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">"&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; null,&lt;/div>&lt;/div>&lt;/div>&lt;/div>
Для&amp;nbsp;выполнения BETWEEN запросов, вы&amp;nbsp;должны использовать следующее:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">'Post.id&amp;nbsp;BETWEEN&amp;nbsp;?&amp;nbsp;AND&amp;nbsp;?'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;/span>&lt;span style="color: #0000BB">1&lt;/span>&lt;span style="color: #007700">,&lt;/span>&lt;span style="color: #0000BB">10&lt;/span>&lt;span style="color: #007700">))&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Внимание: &lt;!--notypo-->CakePHP&lt;!--/notypo--> будет брать в&amp;nbsp;кавычки численные значения, в&amp;nbsp;зависимости от&amp;nbsp;типа поля в&amp;nbsp;БД.&lt;br />
А&amp;nbsp;как же&amp;nbsp;с GROUP BY?&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">'fields'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'Product.type'&lt;/span>&lt;span style="color: #007700">,&lt;/span>&lt;span style="color: #DD0000">'MIN(Product.price)&amp;nbsp;as&amp;nbsp;price'&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'group'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'Product.type'&lt;/span>&lt;span style="color: #007700">);&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Быстрый пример создания DISTINCT запроса. Вы&amp;nbsp;можете использовать другие операторы, такие как&amp;nbsp;MIN(), MAX(), и&amp;nbsp;пр., в&amp;nbsp;подобном виде:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">'fields'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'DISTINCT&amp;nbsp;(User.name)&amp;nbsp;AS&amp;nbsp;my_column_name'&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'order'&lt;/span>&lt;span style="color: #007700">=&amp;gt;array(&lt;/span>&lt;span style="color: #DD0000">'User.id&amp;nbsp;DESC'&lt;/span>&lt;span style="color: #007700">));&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Вы&amp;nbsp;можете создавать очень сложные условия:&lt;br />
&lt;div class="indent"> 'OR' =&amp;gt; array(&lt;br />
&lt;div class="indent">&lt;div class="indent">array('&lt;span class="missingpage">Company.name&lt;/span>&lt;a href="http://cake-php.ru/wiki/Company/name/edit?add=1" title="Создать эту страницу">?&lt;/a>' =&amp;gt; 'Future Holdings'),&lt;br />
array('&lt;span class="missingpage">Company.name&lt;/span>&lt;a href="http://cake-php.ru/wiki/Company/name/edit?add=1" title="Создать эту страницу">?&lt;/a>' =&amp;gt; 'Steel Mega Works')&lt;br />
&lt;/div>&lt;/div> ),&lt;br />
 'AND' =&amp;gt; array(&lt;br />
&lt;div class="indent">&lt;div class="indent">array(&lt;br />
&lt;div class="indent"> 'OR'=&amp;gt;array(&lt;br />
&lt;div class="indent">&lt;div class="indent">array('&lt;span class="missingpage">Company.status&lt;/span>&lt;a href="http://cake-php.ru/wiki/Company/status/edit?add=1" title="Создать эту страницу">?&lt;/a>' =&amp;gt; 'active'),&lt;br />
'NOT'=&amp;gt;array(&lt;br />
&lt;div class="indent"> array('&lt;span class="missingpage">Company.status&lt;/span>&lt;a href="http://cake-php.ru/wiki/Company/status/edit?add=1" title="Создать эту страницу">?&lt;/a>'=&amp;gt; array('inactive', 'suspended'))&lt;br />
&lt;/div>)&lt;br />
&lt;/div>&lt;/div> )&lt;br />
&lt;/div>&lt;/div> )&lt;br />
&lt;/div> )&lt;/div>
Условие выше сгенерирует следующий SQL:&lt;br />
%%(sql)&lt;br />
SELECT `Company`.`id`, `Company`.`name`, &lt;br />
`Company`.`description`, `Company`.`location`, &lt;br />
`Company`.`created`, `Company`.`status`, `Company`.`size`&lt;br />
FROM&lt;br />
&lt;div class="indent"> `companies` AS&amp;nbsp;`Company`&lt;/div>
WHERE&lt;br />
&lt;div class="indent"> ((`Company`.`name` = 'Future Holdings')&lt;br />
 OR&lt;br />
 (`Company`.`name` = 'Steel Mega Works'))&lt;/div>
AND&lt;br />
&lt;div class="indent"> ((`Company`.`status` = 'active')&lt;br />
 OR&amp;nbsp;(NOT (`Company`.`status` IN&amp;nbsp;('inactive', 'suspended'))))&lt;/div>
&lt;span class="missingpage">&amp;lt;&amp;lt; Создание таблиц базы данных&lt;/span>&lt;a href="http://cake-php.ru/wiki/Creating/edit?add=1" title="Создать эту страницу">?&lt;/a> | &lt;span class="missingpage">Сохранение данных &amp;gt;&amp;gt;&lt;/span>&lt;a href="http://cake-php.ru/wiki/Saving/edit?add=1" title="Создать эту страницу">?&lt;/a>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Параметру $type можно присваивать что-либо из&amp;nbsp;'all', 'first', 'count', 'list', 'neighbors' or&amp;nbsp;'threaded'. 'first' &amp;ndash; значение по&amp;nbsp;умалчанию.&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-17 21:57:29</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-17+21%3A57%3A29</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+21%3A57%3A29">2009-02-17 21:57:29&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+22%3A47%3A41">2009-02-17 22:47:41&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">"Post.title&amp;nbsp;&amp;lt;&amp;gt;"&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">"This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;post"&lt;/span>&lt;span style="color: #007700">)&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Заметьте, что&amp;nbsp;'&amp;lt;&amp;gt;' следует за&amp;nbsp;именем поля. &lt;!--notypo-->CakePHP&lt;!--/notypo--> может разобрать любой допустимый SQL&amp;nbsp;оператор сравнения, включая выражения, использующие LIKE, BETWEEN, или&amp;nbsp;REGEX, только если вы&amp;nbsp;поставите пробел между именем поля и&amp;nbsp;оператором. Единственное исключение &amp;ndash; это&amp;nbsp;оператор IN&amp;nbsp;(...). Например, вы&amp;nbsp;хотете найти все&amp;nbsp;посты с&amp;nbsp;названиями из&amp;nbsp;заданного множества:&lt;br />
&lt;div class="indent">"&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; array(&amp;laquo;Первый пост&amp;raquo;, &amp;laquo;Второй пост&amp;raquo;, &amp;laquo;Третиий пост&amp;raquo;)&lt;/div>
Чтобы сделать NOT&amp;nbsp;IN(...) аналог, для&amp;nbsp;поиска постов с&amp;nbsp;названиями, не&amp;nbsp;входящими в&amp;nbsp;данное множество:&lt;br />
&lt;div class="indent">&amp;#147;NOT&amp;#148; =&amp;gt; array( "&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; array(&amp;laquo;Первый пост&amp;raquo;, &amp;laquo;Второй пост&amp;raquo;, &amp;laquo;Третиий пост&amp;raquo;) )&lt;/div>
Добавить дополнительный фильтр в&amp;nbsp;условие также просто, как&amp;nbsp;добавить пару индекс/значение в&amp;nbsp;массив:&lt;br />
array (&lt;br />
&lt;div class="indent">"&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; array(&amp;laquo;Первый пост&amp;raquo;, &amp;laquo;Второй пост&amp;raquo;, &amp;laquo;Третиий пост&amp;raquo;),&lt;br />
"&lt;span class="missingpage">Post.created&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/created/edit?add=1" title="Создать эту страницу">?&lt;/a> &amp;gt;" =&amp;gt; date('Y-m-d', strtotime(&amp;laquo;-2 weeks&amp;raquo;))&lt;/div>
Вы&amp;nbsp;также можете создавать поисковые запросы, которые сравнивают два&amp;nbsp;поля в&amp;nbsp;базе данных:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;&lt;/span>&lt;span style="color: #007700">array(&lt;/span>&lt;span style="color: #DD0000">"Post.created&amp;nbsp;=&amp;nbsp;Post.modified"&lt;/span>&lt;span style="color: #007700">)&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
В&amp;nbsp;примере выше,  будут возвращены посты, у&amp;nbsp;которых дата создания равна дате модификации (т.е. посты, которые никогда не&amp;nbsp;редактировались).&lt;br />
Помните, что&amp;nbsp;если вы&amp;nbsp;не можете сформировать WHERE условие, то&amp;nbsp;можете определить его&amp;nbsp;в&amp;nbsp;виде строки, например:&lt;br />
&lt;div class="indent">&lt;div class="indent">'&lt;span class="missingpage">Model.field&lt;/span>&lt;a href="http://cake-php.ru/wiki/Model/field/edit?add=1" title="Создать эту страницу">?&lt;/a> &amp; 8 = 1',&lt;br />
//другие условия как&amp;nbsp;обычно&lt;/div>&lt;/div>
По&amp;nbsp;умолчанияю &lt;!--notypo-->CakePHP&lt;!--/notypo--> соединяет множественные условия с&amp;nbsp;помощью оператора AND; что&amp;nbsp;для примера выше означает &amp;ndash; будут выбраны посты, созданные в&amp;nbsp;последние две&amp;nbsp;недели и&amp;nbsp;имеющие любое название из&amp;nbsp;данного множества. Однако, мы&amp;nbsp;можем также легко найти посты, которые соответствуют условию OR:&lt;br />
array( &amp;#147;or&amp;#148; =&amp;gt; array (&lt;br />
&lt;div class="indent">"&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; array(&amp;laquo;Первый пост&amp;raquo;, &amp;laquo;Второй пост&amp;raquo;, &amp;laquo;Третиий пост&amp;raquo;),&lt;br />
"&lt;span class="missingpage">Post.created&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/created/edit?add=1" title="Создать эту страницу">?&lt;/a> &amp;gt;" =&amp;gt; date('Y-m-d', strtotime(&amp;laquo;-2 weeks&amp;raquo;))&lt;/div>
Кейк принимает все&amp;nbsp;действующие логические SQL-операторы, включая AND, OR, NOT, XOR, и&amp;nbsp;др. Они&amp;nbsp;могут быть набраны строчными или&amp;nbsp;заглавными буквами. Эти&amp;nbsp;условия также бесконечно &amp;laquo;гнездящиеся&amp;raquo;. Предположим, у&amp;nbsp;вас есть  belongsTo ассоциация между Posts и&amp;nbsp;Authors. И&amp;nbsp;вы хотите найти все&amp;nbsp;посты, содержащие конкретное слово(&amp;laquo;волшебный&amp;raquo;) или, которые были созданы в&amp;nbsp;последние две&amp;nbsp;недели, но&amp;nbsp;вы хотите ограничить ваш&amp;nbsp;поиск только постами, написанными Василием:&lt;br />
array (&lt;br />
&lt;div class="indent">"&lt;span class="missingpage">Author.name&lt;/span>&lt;a href="http://cake-php.ru/wiki/Author/name/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; &amp;laquo;Василий&amp;raquo;, &lt;br />
&amp;#147;or&amp;#148; =&amp;gt; array (&lt;br />
&lt;div class="indent">"&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a> LIKE" =&amp;gt; "%волшебный%",&lt;br />
"&lt;span class="missingpage">Post.created&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/created/edit?add=1" title="Создать эту страницу">?&lt;/a> &amp;gt;" =&amp;gt; date('Y-m-d', strtotime(&amp;laquo;-2 weeks&amp;raquo;))&lt;br />
&lt;/div>)&lt;/div>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-16 22:54:02</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-16+22%3A54%3A02</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+22%3A54%3A02">2009-02-16 22:54:02&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-17+21%3A57%3A29">2009-02-17 21:57:29&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;a name="h813-1">&lt;/a>&lt;h3>Комплексные условия поиска&lt;/h3>
Множество поисковых запросов модели требуют передачу условий тем&amp;nbsp;или иным способом. Самый простой способ &amp;ndash; это&amp;nbsp;использовать SQL&amp;nbsp;оператор WHERE. Если вам&amp;nbsp;понадобится больше управления, то&amp;nbsp;вы может использовать массивы.   &lt;br />
Использование массивов яснее и&amp;nbsp;легче воспринимается, а&amp;nbsp;также, делает очень простым создание запросов. В&amp;nbsp;синтаксисе, также разделяются элементы вашего запроса (поля, значения, операторы, и&amp;nbsp;др.) на&amp;nbsp;отдельные управляемые части. Это&amp;nbsp;позволяет &lt;!--notypo-->CakePHP&lt;!--/notypo--> генерировать наиболее эффективные запросы, обеспечивать правильный SQL&amp;nbsp;синтаксис, и&amp;nbsp;корректно завершать каждую часть запроса. &lt;br />
Базовый запрос, основанный на&amp;nbsp;массиве, выглядит так:&lt;br />
$conditions = array("&lt;span class="missingpage">Post.title&lt;/span>&lt;a href="http://cake-php.ru/wiki/Post/title/edit?add=1" title="Создать эту страницу">?&lt;/a>" =&amp;gt; &amp;laquo;Это пост&amp;raquo;);&lt;br />
//Пример использования с&amp;nbsp;моделью:&lt;br />
$this-&amp;gt;Post-&amp;gt;find($conditions);&lt;br />
Структура здесь говорит сама за&amp;nbsp;себя: запрос найдет любой пост, название которого равно &amp;laquo;Это пост&amp;raquo;. Обратите внимание, что&amp;nbsp;мы&amp;nbsp;можем использовать только &amp;#147;title&amp;#148; в&amp;nbsp;качестве имени поля, но&amp;nbsp;указывать имя&amp;nbsp;модели при&amp;nbsp;создании запросов является хорошей практикой. Это&amp;nbsp;делает код&amp;nbsp;более понятным и&amp;nbsp;помогает предотвратить конфликтные ситуации в&amp;nbsp;будущем, если вы&amp;nbsp;решите внести изменения в&amp;nbsp;вашу схему данных.&lt;br />
Что&amp;nbsp;касается других подобных запросов, то&amp;nbsp;они также просты. Допустим, мы&amp;nbsp;хотим найти все&amp;nbsp;посты, в&amp;nbsp;которых название не&amp;nbsp;равно &amp;laquo;Это пост&amp;raquo;:&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;a name="h813-1">&lt;/a>&lt;h3>Complex Find Conditions&lt;/h3>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-16 15:23:53</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-16+15%3A23%3A53</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+15%3A23%3A53">2009-02-16 15:23:53&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+22%3A54%3A02">2009-02-16 22:54:02&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Обычные SQL&amp;nbsp;запросы могут быть сделаны с&amp;nbsp;помощью метода модели query().&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Обычные SQL&amp;nbsp;вызовы могут быть сделаны с&amp;nbsp;помощью метода модели query().&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-16 14:20:51</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-16+14%3A20%3A51</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+14%3A20%3A51">2009-02-16 14:20:51&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+15%3A23%3A53">2009-02-16 15:23:53&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;div class="indent"> &lt;strong>findCount(string $conditions, int $recursive)&lt;/strong>&lt;/div>
&lt;span class="cite">Этот метод оставлен для&amp;nbsp;совместимости, используйте find('count').&lt;/span>&lt;br />
Возвращает количество записей, удовлетворяющих заданному условию. Используйте параметр $recursive, для&amp;nbsp;того, чтобы &lt;!--notypo-->CakePHP&lt;!--/notypo--> выбирал больше (или меньше) уровней ассоциированных моделей.&lt;a name="h813-1">&lt;/a>&lt;h3>field&lt;/h3>
&lt;div class="indent"> &lt;strong>field(string $name, array $conditions = null, string $order = null)&lt;/strong>&lt;/div>
Возвращает значение отдельно взятого поля, определенного как $name, из&amp;nbsp;первой записи результата выборки, удовлетворяющей условию $conditions и&amp;nbsp;отсортированной согласно $order. Если никаких условий не&amp;nbsp;указано, но&amp;nbsp;определен id, то&amp;nbsp;функция вернет значение поля $name для&amp;nbsp;данного id. Если нет&amp;nbsp;подходящей записи, то&amp;nbsp;функция вернет false.&lt;br />
$model-&amp;gt;id = 22;&lt;br />
echo $model-&amp;gt;field('name'); // выводит значение поля name для&amp;nbsp;id=22&lt;br />
// выводит значение поля name записи, созданной последней.&lt;br />
echo $model-&amp;gt;field('name', array('created &amp;lt;' =&amp;gt; date('Y-m-d H:i:s')), 'created DESC'); &lt;a name="h813-2">&lt;/a>&lt;h3>Complex Find Conditions&lt;/h3>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-16 13:39:30</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-16+13%3A39%3A30</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+13%3A39%3A30">2009-02-16 13:39:30&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+14%3A20%3A51">2009-02-16 14:20:51&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;a name="h813-1">&lt;/a>&lt;h3>generateList&lt;/h3>
&lt;div class="indent"> &lt;strong>generateList(string $conditions, string $order, int $limit, string $keyPath, string $valuePath)&lt;/strong>&lt;/div>
&lt;span class="cite">generateList устарела и&amp;nbsp;заменена использованием find('list'), или&amp;nbsp;find('all'), совмещенная с&amp;nbsp;вызовом Set::combine()&lt;/span>.&lt;br />
Эта&amp;nbsp;функция используется для&amp;nbsp;быстрого получения списка пар&amp;nbsp;ключ/значение &amp;ndash; особенно удобно для&amp;nbsp;создания HTML тэга select из&amp;nbsp;списка ваших моделей. Используйт параметры $conditions, $order, и $limit так&amp;nbsp;же, как&amp;nbsp;бы&amp;nbsp;вы их&amp;nbsp;использовали для&amp;nbsp;findAll() запроса.&lt;br />
Если $primaryKey и $displayField определены в&amp;nbsp;модели, то&amp;nbsp;нет необходимости передавать два&amp;nbsp;последних параметра, т.к. они&amp;nbsp;действуют, как $keyPath и $keyValue, соответственно. Также, если ни $keyPath ни $displayField не&amp;nbsp;передаются, то&amp;nbsp;&lt;!--notypo-->CakePHP&lt;!--/notypo--> попытается загрузить информацию, используя 'title' или&amp;nbsp;'name'.&lt;br />
Параметры $keyPath и $valuePath определяют где&amp;nbsp;искать ключи и&amp;nbsp;значения для&amp;nbsp;сгенерированного списка. Для&amp;nbsp;примера, если вы&amp;nbsp;хотите сгенерировать список на&amp;nbsp;основе вашей модели Role, с&amp;nbsp;ключом integer id, полный вызов должен выглядеть, например, так.:&lt;br />
$this-&amp;gt;Role-&amp;gt;generateList(&lt;br />
&lt;div class="indent">&lt;div class="indent">null, &lt;br />
'role_name ASC', &lt;br />
null, &lt;br />
'{n}.&lt;span class="missingpage">Role.id&lt;/span>&lt;a href="http://cake-php.ru/wiki/Role/id/edit?add=1" title="Создать эту страницу">?&lt;/a>', &lt;br />
'{n}.&lt;span class="missingpage">Role.role_name&lt;/span>&lt;a href="http://cake-php.ru/wiki/Role/rolename/edit?add=1" title="Создать эту страницу">?&lt;/a>'&lt;/div>&lt;/div>
//Это вернет, нечто наподобие:&lt;br />
&lt;div class="indent">&lt;div class="indent">'1' =&amp;gt; 'Head Honcho',&lt;br />
'2' =&amp;gt; 'Marketing',&lt;br />
'3' =&amp;gt; 'Department Head',&lt;br />
'4' =&amp;gt; 'Grunt'&lt;/div>&lt;/div>
Многих людей немного смущает синтаксис '{n}', используемый generateList(). Не&amp;nbsp;беспокойтесь, это&amp;nbsp;символ-заполнитель для&amp;nbsp;переключения между источниками данных модели. Об&amp;nbsp;этом будет написано далее.&lt;a name="h813-2">&lt;/a>&lt;h3>findCount&lt;/h3>&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">generateList(string $conditions, string $order, int $limit, string $keyPath, string $valuePath)&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-02-16 12:58:26</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving/show?time=2009-02-16+12%3A58%3A26</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Models&amp;nbsp;/&amp;nbsp;Retrieving&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+12%3A58%3A26">2009-02-16 12:58:26&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Models/Retrieving?time=2009-02-16+13%3A39%3A30">2009-02-16 13:39:30&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Для&amp;nbsp;того, чтобы ваш&amp;nbsp;запрос не&amp;nbsp;кэшировался, присваивайте второму параметру значение false. Пример: query($query, $cachequeries = false).&lt;br />
query() использует имя&amp;nbsp;таблицы в&amp;nbsp;запросе, как&amp;nbsp;индекс массива для&amp;nbsp;возвращаемых данных, а&amp;nbsp;не имя&amp;nbsp;модели. Например,&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">Picture&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">query&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #DD0000">"SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;pictures&amp;nbsp;LIMIT&amp;nbsp;2;"&lt;/span>&lt;span style="color: #007700">);&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
может вернуть&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">[pictures] =&amp;gt; Array&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">[id] =&amp;gt; 1304&lt;br />
[user_id] =&amp;gt; 759&lt;br />
&lt;/div>&lt;/div>&lt;/div>&lt;/div>[pictures] =&amp;gt; Array&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">[id] =&amp;gt; 1305&lt;br />
[user_id] =&amp;gt; 759&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>
Для&amp;nbsp;использования имя&amp;nbsp;модели, в&amp;nbsp;виде индекса массива, и&amp;nbsp;получения соответствующего результата, запрос должен быть переписан: &lt;br />
%%(php)&amp;lt;? $this-&amp;gt;Picture-&amp;gt;query(&amp;laquo;SELECT * FROM pictures AS&amp;nbsp;Picture LIMIT 2;"); ?&amp;gt;&lt;br />
Результат:&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">[Picture] =&amp;gt; Array&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">[id] =&amp;gt; 1304&lt;br />
[user_id] =&amp;gt; 759&lt;br />
&lt;/div>&lt;/div>&lt;/div>&lt;/div>[Picture] =&amp;gt; Array&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">[id] =&amp;gt; 1305&lt;br />
[user_id] =&amp;gt; 759&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>&lt;/div>
generateList(string $conditions, string $order, int $limit, string $keyPath, string $valuePath)&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>
