我已经使用Zend构建了一个非常大的应用程序,我想知道哪个会更好,手动构建查询(使用Zend对象模型)
$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个表,这些表的运行速度与手工查询一样快?
由于
答案 0 :(得分:2)
通常,构建自己的查询是最好的方法,因为zend只会创建一个对象(或一组对象)并只进行一次查询。
如果使用findDependentRowset,Zend将执行另一个查询并使用每个调用的结果构建另一个对象(或set)。
您应该仅在非常具体的情况下使用它。
请参阅此问题:PHP - Query single value per iteration or fetch all at start and retrieve from array?