Сделанные вручную запросы против findDependentRowset - PullRequest
2 голосов
/ 14 декабря 2010

Я создал довольно большое приложение с Zend, и мне было интересно, что было бы лучше: создавать запросы вручную (используя объектную модель Zend)

$db->select()
   ->form('table')
   ->join('table2',
          'table.id = table2.table_id')

или использовать метод findDependentRowset ( Zend doc для findDependentRowSet ).

Мне было интересно, так как я сделал тест для выборки данных по нескольким таблицам и отображения всей информации из таблицы, а findDependentRowset, казалось, работал медленнее.Я могу ошибаться, но я предполагаю, что каждый раз новый запрос вызывается findDependentRowset, как в:

$table1 = new Model_Table1;
$rowset = $table1-fetchAll();
foreach($rowset as $row){
    $table2data = $row->findDependentRowset('Model_Table2', 'Map');

    echo $row['field'] . ' ' . $table2data['field'];
}

Итак, какой из них лучше, и есть ли способ использовать findDependentRowset для построения сложных запросов?это может охватывать более 5 таблиц, которые будут выполняться так же быстро, как и ручной запрос?

Спасибо

1 Ответ

2 голосов
/ 14 декабря 2010

Как правило, лучше всего создать собственный запрос, поскольку Zend создаст только один объект (или набор объектов) и выполнит только один запрос.

Если вы используете findDependentRowset, Zend выполнит другой запроси построить другой объект (или набор) с результатом для каждого вызова.

Вы должны использовать это только в очень специфических случаях.

См. Этот вопрос: PHP - Запрос одного значения за итерацию или выборка всех при запуске и получение из массива?

...