К чему "к старому"? К написанию запроса полным текстом, а не обрывками, чтоб можно было взглянуть на запрос и сразу понять что он из себя представляет, а не догадывать по названию методов или по описанию phpDoc к ним.
Вероятность составить запрос неправильно значительно увеличивается в таком случаи.
Okula, sql запросы в коде, это как html в контроллере.. Хотя мне и самому большинство подобных построителей не очень нравятся ( в Yii, Zend'e еще более менее, в Kohan'e и Symfony ( или CodeIgniter ) вообще хрень полнейшая ), но все же это лучше, чем sql код.
Febian, php
D.T.S, можно подробнее, что понравилось в этих фреймворках?
В yii вообще не нужно запросы писать, существует генератор моделей да AR в придачу.
01 Фев 2013, 21:46D.T.S, вот к примеру: у меня есть SQL запрос из реально рабочего скрипта (поля и имена таблиц естественно изменены):
SELECT a.*, b.`pole1_b`, b.`pole2_b`,
(
SELECT COUNT(`id`)
FROM `table`
WHERE `pole` LIKE CONCAT(a.`pole`, '%') AND `pole1`<>0
) AS `col`,
(
SELECT COUNT(`id`)
FROM `table`
WHERE `pole` LIKE CONCAT(a.`pole`, '%') AND `pole1`<>0 AND `pole2`>43646747487
) AS `col2`,
(
SELECT COUNT(`id`)
FROM `table_c` WHERE `pole_c`=a.`pole1`
) AS `com_kol`
FROM `table` AS a
LEFT OUTER JOIN `table_b` AS b ON b.`pole`=a.`pole3`
WHERE a.`pole2`=5
ORDER BY a.`pole1` ASC, a.`pole2` ASC
LIMIT 0, 50;
Как будет выглядеть такой запрос обработанный "плюшками фреймворка"?
Okula, немного другой пример. Допустим есть таблицы users, profile, posts, files.
Запрос: SELECT u.*, p.*,
(SELECT COUNT(*)
FROM `posts`
WHERE `author_id` = u.`id`) as `posts`,
(SELECT COUNT(*)
FROM `files`
WHERE `owner_id` = u.`id` AND `mod` = 1) as `files`
FROM `users` u
INNER JOIN `profile` p ON(p.`user_id` = u.`id`)
WHERE `id` = 1
В yii этот запрос мог бы выглядеть так: [php:1:dec82e4f6e]$user = User::model()->find(array(
'with' => array('profile', 'posts', 'files'),
'condition' => 'id = 1'
));
echo $user->posts;[/php:1:dec82e4f6e]
Okula, ответили выше. Но в отличии от прямых запросов, имеется переносимость, связи, ленивая загрузка, фильтры и т.п ORM куда мощней и проще, выводит функции япа на более высокий уровень и программисту не нужно знать как выглядит БД.
Разговор ведь был не о ORM, а о обертке-построителе запросов.
Разговор о том что этот построитель мало универсален, лучше уж использовать ActiveRecord