1
我是新來Doctrine和ActiveRecord。PHP原則:過濾已加載的數據?
如何過濾表格後加載?(我想這是優先於發送多個查詢?)
這是'好'還是'壞'?
class UserTable extends Doctrine_Table {
function filterByGroup($group) {
$ut = new UserTable();
foreach($this as $u) {
if($u->group == $group) $ut->add($u);
}
return $ut;
}
}
編輯:
我知道有內置的功能,這提供商「過濾」功能。但是下面的兩個代碼塊在性能方面表現會有所不同嗎?
//1
$users = Doctrine_Core::getTable('Users')->findAll();
$admins = Doctrine_Core::getTable('Users')->findByGroupName('admin');
//2
$admins = Doctrine_Core::getTable('Users')->findByGroupName('admin');
$users = Doctrine_Core::getTable('Users')->findAll();
抱歉在僞造錯誤的拼寫錯誤;),替換。請參閱最新的問題。我關心的是需要查詢的數量。如果只需要1個查詢,則意味着Doctrine會自動加載所有記錄,並在其內部結果上調用findBy函數。這涉及到我關於大型表......但是,如果使用多個查詢,那麼我的問題仍然有效,如何在表中使用「加載」結果並真正過濾這些結果? – Ropstah 2010-03-23 22:14:40
findBy方法不會加載所有行,它會根據您指定的字段和值生成WHERE子句。我認爲不重要的是你打這些電話的順序,表現應該是一樣的。我認爲Doctrine_Collection中有一種方法可以過濾結果,但我在乍一看沒有在文檔中看到它。 – Jody 2010-03-24 14:05:14