Тема: Обработка SQL-запросов в фреймворках
Здравствуйте. Недавно озаботился следующим вопросом. Пишу приложение на Zend_Framework (да в принципе фреймворк не важен, такой вопрос можно поднять с любым) и нужно выполнить к БД один запрос небольшого размера. В чистом виде он выглядит вот так
SELECT `su`.`group_id` , `su`.`login` , `su`.`password` , `su`.`hash` , `su`.`shell_id` ,
`sug`.`name` AS `shell` , `sus`.`name` AS `group`
FROM `server_users` AS `su`
INNER JOIN `server_users_groups` AS `sug` ON sug.id = su.group_id
INNER JOIN `server_users_shells` AS `sus` ON sus.id = su.shell_id
WHERE (su.server_id = '1')
И есть 2 варианта его выполнения. Первый - послать адаптеру запрос обычным текстом и получить ответ.
$result = $this->getAdapter()->fetchAll("SELECT `su`.`group_id` , `su`.`login` , `su`.`password` , `su`.`hash` , `su`.`shell_id` ,
`sug`.`name` AS `shell` , `sus`.`name` AS `group`
FROM `server_users` AS `su`
INNER JOIN `server_users_groups` AS `sug` ON sug.id = su.group_id
INNER JOIN `server_users_shells` AS `sus` ON sus.id = su.shell_id
WHERE (su.server_id = ?)", $serverId);
Или же воспользоваться встроенным билдером, и получить вот такой код:
$db = $this->getAdapter();
$select = $db->select();
$select->from(array('su' => 'server_users'),
array('group_id', 'login', 'password', 'hash', 'shell_id', 'home_dir', 'additional'))
->join(array('sug' => 'server_users_groups'),
'sug.id = su.group_id',
array('group' => 'name'))
->join(array('sus' => 'server_users_shells'),
'sus.id = su.shell_id',
array('shell' => 'name'))
->where('su.server_id = ?', $serverId);$resut = $db->fetchAll($select);
Последний вариант мне кажется каким-то более запутанным, что-ли
Какой из методов желательнее использовать в данной ситуации? Первый - простой, но без использования специальных инструментов ZF, или второй - более запутанный, но с использованием инструментов ZF?