2010-12-13 1 views
2

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

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

или собираются с помощью метода findDependentRowset (Zend doc for 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 таблиц который будет работать так же быстро, как ручной запрос?

Благодаря

ответ

2

Вообще, создать свой собственный запрос является лучшим способом пойти, потому что Зенд будет создать только один объект (или совокупность объектов) и делать только один запрос.

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

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

Смотрите этот вопрос: PHP - Query single value per iteration or fetch all at start and retrieve from array?

+0

Спасибо очищает вещи: D –