Hand made queries vs findDependentRowset

2019-02-25 17:22发布

I have built a pretty big application with Zend and i was wondering which would be better, building query by hand (using the Zend object model)

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

or going with the findDependentRowset method (Zend doc for findDependentRowSet).

I was wondering since i did a test to fetch data over multiple tables and display all the informations from a table and the findDependentRowset seemed to run slower. I might be wrong but i guess it makes a new query every time findDependentRowset is called as in :

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

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

So, which one is better and is there a way using findDependentRowset to build complexes queries that could span over 5 tables which would run as fast as a hand made query?

Thanks

1条回答
地球回转人心会变
2楼-- · 2019-02-25 17:28

Generally, build your own query is the best way to go, because zend will create just one object (or set of objects) and do just one query.

If you use findDependentRowset Zend will perform another query and build another object (or set) with the result for each call.

You should use this only in very specific cases.

See this question: PHP - Query single value per iteration or fetch all at start and retrieve from array?

查看更多
登录 后发表回答