Xwab
Форумыnavigate_nextФреймворки на PHP

Плюшки фреймворков
Сообщения
Okula

К чему "к старому"? К написанию запроса полным текстом, а не обрывками, чтоб можно было взглянуть на запрос и сразу понять что он из себя представляет, а не догадывать по названию методов или по описанию phpDoc к ним.
Вероятность составить запрос неправильно значительно увеличивается в таком случаи.

01 Фев 2013, 20:02
deadline404

Okula, Спасибо, посмеялся

01 Фев 2013, 20:05
aBSuRD

Okula, sql запросы в коде, это как html в контроллере.. Хотя мне и самому большинство подобных построителей не очень нравятся ( в Yii, Zend'e еще более менее, в Kohan'e и Symfony ( или CodeIgniter ) вообще хрень полнейшая ), но все же это лучше, чем sql код.
Febian, php
D.T.S, можно подробнее, что понравилось в этих фреймворках?

01 Фев 2013, 20:39
Okula

D.T.S, так и скажи что я прав, раз не можешь аргументировать

01 Фев 2013, 20:39
deadline404

Okula, Ок ок

01 Фев 2013, 20:44
Akdmeh

В yii вообще не нужно запросы писать, существует генератор моделей да AR в придачу.

01 Фев 2013, 21:46
Okula

D.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;
Как будет выглядеть такой запрос обработанный "плюшками фреймворка"?

01 Фев 2013, 23:09
aBSuRD

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]

02 Фев 2013, 0:43
deadline404

Okula, ответили выше. Но в отличии от прямых запросов, имеется переносимость, связи, ленивая загрузка, фильтры и т.п ORM куда мощней и проще, выводит функции япа на более высокий уровень и программисту не нужно знать как выглядит БД.


__________
посл.ред. 02 Фев 2013, 9:53; всего 1 раз 02 Фев 2013, 9:35
Akdmeh

Разговор ведь был не о ORM, а о обертке-построителе запросов.
Разговор о том что этот построитель мало универсален, лучше уж использовать ActiveRecord

02 Фев 2013, 9:43
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.