<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии на: Объект Database</title>
	<atom:link href="http://brotkin.ru/2009/02/26/obekt-database/feed/" rel="self" type="application/rss+xml" />
	<link>http://brotkin.ru/2009/02/26/obekt-database/</link>
	<description>ковыряемся в Internet</description>
	<lastBuildDate>Fri, 11 May 2012 06:10:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>От: Олег</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-3682</link>
		<dc:creator>Олег</dc:creator>
		<pubDate>Tue, 27 Mar 2012 20:15:42 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-3682</guid>
		<description>Спасибо, при использовании Database_Expression все получилось.</description>
		<content:encoded><![CDATA[<p>Спасибо, при использовании Database_Expression все получилось.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: biakaveron</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-3675</link>
		<dc:creator>biakaveron</dc:creator>
		<pubDate>Tue, 27 Mar 2012 07:04:21 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-3675</guid>
		<description>Видно, что у Вас переданное имя поля (NULL) было заключено в апострофы, поэтому и ошибка. Мне думается, что единственный способ сделать такую выборку - использовать Database_Expression:

&lt;code&gt;&lt;pre lang=&quot;php&quot;&gt;-&gt;order_by(new Database_Expression(&#039;RAND()&#039;))&lt;/pre&gt;&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Видно, что у Вас переданное имя поля (NULL) было заключено в апострофы, поэтому и ошибка. Мне думается, что единственный способ сделать такую выборку &#8211; использовать Database_Expression:</p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">-&gt;</span><span style="color: #004000;">order_by</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Database_Expression<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'RAND()'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p></code></p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Олег</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-3674</link>
		<dc:creator>Олег</dc:creator>
		<pubDate>Tue, 27 Mar 2012 01:37:56 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-3674</guid>
		<description>Здравствуйте!
У меня ни как не получается сделать случайную выборку одного элемента из БД в Kohana ORM. Вот мой запрос:
$product = $category-&gt;products-&gt;where(&#039;status&#039;, &#039;!=&#039;, 0)-&gt;order_by(NULL, &#039;RAND()&#039;)-&gt;find();
А вот какая выводится ошибка:
Database_Exception [ 1064 ]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near &#039;RAND() LIMIT 1&#039; at line 1 [ SELECT `me_products`.* FROM `me_products` JOIN `me_products_categories` ON (`me_products_categories`.`product_id` = `me_products`.`id`) WHERE `me_products_categories`.`category_id` = &#039;9&#039; AND `status` != 0 ORDER BY `` RAND() LIMIT 1 ]
Без order_by(NULL, &#039;RAND()&#039;) все работает хорошо, но только выборка не случайная конечно.
Прошу, кто может - помогите!</description>
		<content:encoded><![CDATA[<p>Здравствуйте!<br />
У меня ни как не получается сделать случайную выборку одного элемента из БД в Kohana ORM. Вот мой запрос:<br />
$product = $category-&gt;products-&gt;where(&#8217;status&#8217;, &#8216;!=&#8217;, 0)-&gt;order_by(NULL, &#8216;RAND()&#8217;)-&gt;find();<br />
А вот какая выводится ошибка:<br />
Database_Exception [ 1064 ]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near &#8216;RAND() LIMIT 1&#8242; at line 1 [ SELECT `me_products`.* FROM `me_products` JOIN `me_products_categories` ON (`me_products_categories`.`product_id` = `me_products`.`id`) WHERE `me_products_categories`.`category_id` = '9' AND `status` != 0 ORDER BY `` RAND() LIMIT 1 ]<br />
Без order_by(NULL, &#8216;RAND()&#8217;) все работает хорошо, но только выборка не случайная конечно.<br />
Прошу, кто может &#8211; помогите!</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: biakaveron</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-3637</link>
		<dc:creator>biakaveron</dc:creator>
		<pubDate>Mon, 05 Mar 2012 19:33:40 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-3637</guid>
		<description>Вероятно Вы имеет в виду ORM, Database Query Builder и Database Query? Нет &quot;лучшего&quot; механизма, есть определенные оптимальные условия для использования одного или другого. ORM наиболее тяжелый способ, но зато он автоматизирует почти 100% рутины, позволяя очень быстро создать рабочую версию проекта. Прямые запросы (Database Query) наиболее быстрые (ничего сверху не накручено), но практически все придется делать руками. Query Builder является промежуточным звеном, позволяющим достаточно просто реализовать многие стандартные операции, и при этом модели остаются вполне быстрыми и легкими. Правда, многие бонусы ORMа (например, связи или валидацию) придется писать самостоятельно.

Обычно проект пишут с ORM, затем определяют узкие места и переделывают с использованием Query Builder&#039;а (или даже прямых запросов).</description>
		<content:encoded><![CDATA[<p>Вероятно Вы имеет в виду ORM, Database Query Builder и Database Query? Нет &#8220;лучшего&#8221; механизма, есть определенные оптимальные условия для использования одного или другого. ORM наиболее тяжелый способ, но зато он автоматизирует почти 100% рутины, позволяя очень быстро создать рабочую версию проекта. Прямые запросы (Database Query) наиболее быстрые (ничего сверху не накручено), но практически все придется делать руками. Query Builder является промежуточным звеном, позволяющим достаточно просто реализовать многие стандартные операции, и при этом модели остаются вполне быстрыми и легкими. Правда, многие бонусы ORMа (например, связи или валидацию) придется писать самостоятельно.</p>
<p>Обычно проект пишут с ORM, затем определяют узкие места и переделывают с использованием Query Builder&#8217;а (или даже прямых запросов).</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Марсель</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-3636</link>
		<dc:creator>Марсель</dc:creator>
		<pubDate>Mon, 05 Mar 2012 18:50:15 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-3636</guid>
		<description>а что лучше использовать в кохана, ORM  или Database?</description>
		<content:encoded><![CDATA[<p>а что лучше использовать в кохана, ORM  или Database?</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: BIakaVeron</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-135</link>
		<dc:creator>BIakaVeron</dc:creator>
		<pubDate>Mon, 02 Mar 2009 08:19:35 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-135</guid>
		<description>&lt;code&gt;
$where = array();
// проверяем переменные, причем можно и в цикл это запихнуть
isset($_POST[&#039;category&#039;]) AND $where[&#039;category_id&#039;] = intval($_POST[&#039;category&#039;]);
$this-&gt;db-&gt;where($where)-&gt;get();
&lt;/code&gt;
Возможно, плейсхолдеры тут бы пригодились чтобы избавиться от функций приведения типа, а так вроде очень даже все ничего ;)</description>
		<content:encoded><![CDATA[<p><code><br />
$where = array();<br />
// проверяем переменные, причем можно и в цикл это запихнуть<br />
isset($_POST['category']) AND $where['category_id'] = intval($_POST['category']);<br />
$this->db->where($where)->get();<br />
</code><br />
Возможно, плейсхолдеры тут бы пригодились чтобы избавиться от функций приведения типа, а так вроде очень даже все ничего <img src='http://brotkin.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Slaver</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-134</link>
		<dc:creator>Slaver</dc:creator>
		<pubDate>Mon, 02 Mar 2009 08:12:49 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-134</guid>
		<description>В &lt;code&gt;имя_поля=&gt;условие&lt;/code&gt; нельзя сделать нормального исключения, если не перадан какой-нибудь параметр. В DbSimple часть запроса в скобках не будет выполняться, если параметра нет (DBSIMPLE_SKIP). Как сделать аналог этого в в QB, без проверки в if-else до самого запроса?

Так что отказываюсь от в QB исключительно из-за нечитабельности запросов  :mrgreen:</description>
		<content:encoded><![CDATA[<p>В <code>имя_поля=&gt;условие</code> нельзя сделать нормального исключения, если не перадан какой-нибудь параметр. В DbSimple часть запроса в скобках не будет выполняться, если параметра нет (DBSIMPLE_SKIP). Как сделать аналог этого в в QB, без проверки в if-else до самого запроса?</p>
<p>Так что отказываюсь от в QB исключительно из-за нечитабельности запросов  <img src='http://brotkin.ru/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>От: BIakaVeron</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-133</link>
		<dc:creator>BIakaVeron</dc:creator>
		<pubDate>Mon, 02 Mar 2009 08:05:43 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-133</guid>
		<description>Макроподстановки - штука интересная, но ведь в QB можно сформировать массив вида &lt;em&gt;имя_поля=&gt;условие&lt;/em&gt; и его затолкать в метод &lt;strong&gt;where()&lt;/strong&gt; или &lt;strong&gt;orwhere()&lt;/strong&gt;. По сути те же макроподстановки и получатся. Разве что без плейсхолдеров, но в QB они наверное уже не нужны будут.
Я не критикую DBSimple, слышал о ней множество положительных отзывов, просто интересно, что в ней есть такого хорошего, чтобы отказываться от &quot;родных&quot; механизмов :)</description>
		<content:encoded><![CDATA[<p>Макроподстановки &#8211; штука интересная, но ведь в QB можно сформировать массив вида <em>имя_поля=>условие</em> и его затолкать в метод <strong>where()</strong> или <strong>orwhere()</strong>. По сути те же макроподстановки и получатся. Разве что без плейсхолдеров, но в QB они наверное уже не нужны будут.<br />
Я не критикую DBSimple, слышал о ней множество положительных отзывов, просто интересно, что в ней есть такого хорошего, чтобы отказываться от &#8220;родных&#8221; механизмов <img src='http://brotkin.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Slaver</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-132</link>
		<dc:creator>Slaver</dc:creator>
		<pubDate>Mon, 02 Mar 2009 07:56:38 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-132</guid>
		<description>Абстракции от БД, действительно, мало. Хотя библиотека и поддерживает MySQL, PostgreSQL и InterBase/FireBird.

Плейсхолдеры — замечательно, но их недостаточно стало, после того, как я познакомился с фигурными скобками :) Это — макроподстановки в запросах, позволяющие динамически генерировать сложные запросы без использования if-else-конструкций в скрипте. Более понятно будет на &lt;a href=&quot;http://dklab.ru/lib/DbSimple/&quot; rel=&quot;nofollow&quot;&gt;примерах&lt;/a&gt;.

Наверное, неправильно это называть абстракцией, это просто возможность писать читабельные запросы. Тем более, имхо :)</description>
		<content:encoded><![CDATA[<p>Абстракции от БД, действительно, мало. Хотя библиотека и поддерживает MySQL, PostgreSQL и InterBase/FireBird.</p>
<p>Плейсхолдеры — замечательно, но их недостаточно стало, после того, как я познакомился с фигурными скобками <img src='http://brotkin.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Это — макроподстановки в запросах, позволяющие динамически генерировать сложные запросы без использования if-else-конструкций в скрипте. Более понятно будет на <a href="http://dklab.ru/lib/DbSimple/" rel="nofollow">примерах</a>.</p>
<p>Наверное, неправильно это называть абстракцией, это просто возможность писать читабельные запросы. Тем более, имхо <img src='http://brotkin.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>От: BIakaVeron</title>
		<link>http://brotkin.ru/2009/02/26/obekt-database/comment-page-1/#comment-131</link>
		<dc:creator>BIakaVeron</dc:creator>
		<pubDate>Mon, 02 Mar 2009 05:25:11 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=187#comment-131</guid>
		<description>А где ж тут, простите, абстрагирование-то? Если Вы используете &lt;em&gt;DATE_FORMAT&lt;/em&gt; и &lt;em&gt;LIMIT&lt;/em&gt;, то уже привязываетесь к определенному кругу СУБД (подозреваю, что только к MySQL в итоге). А цель &lt;em&gt;Query Builder&lt;/em&gt;&#039;а как раз в работе с СУБД как с неким обобщенным объектом, без специфики.
А подобные запросы и через метод &lt;em&gt;query()&lt;/em&gt; использовать, он плейсхолдеры поддерживает.
PS. А зачем нужны фигурные скобки?</description>
		<content:encoded><![CDATA[<p>А где ж тут, простите, абстрагирование-то? Если Вы используете <em>DATE_FORMAT</em> и <em>LIMIT</em>, то уже привязываетесь к определенному кругу СУБД (подозреваю, что только к MySQL в итоге). А цель <em>Query Builder</em>&#8216;а как раз в работе с СУБД как с неким обобщенным объектом, без специфики.<br />
А подобные запросы и через метод <em>query()</em> использовать, он плейсхолдеры поддерживает.<br />
PS. А зачем нужны фигурные скобки?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

