2010-06-10 7 views
0

當我做類似如下:Kohanav3 ORM:致電凡 - > find_all兩次

$site = ORM::factory('site')->where('name', '=', 'Test Site')->find(); 
$users = $site->users; 
$deletedusers = $users->where('deleted', '=', '1')->find_all(); 
$nondeletedusers = $users->where('deleted', '=', '0')->find_all(); 

$ deletedusers的內容是正確的,但$ nondeletedusers包含所有非刪除的用戶,不只是那些在加載$站點。

我在做什麼錯?

回答

0

其因爲find_all()find()方法將重置您的模型狀態。例如,$user的條件爲where('site_id', '=', <site_id>)(它已應用於代碼的第1行)。當您撥打find_all()時,ORM重置所有條件,因此$nondeletedusers與空模型一起使用。

爲了避免這種情況,你可以嘗試clone $用戶,或者從$user檢索所有用戶ID和添加AND WHERE id IN <id list>條件。

+0

我克隆用戶,它的工作:)謝謝! – 2010-09-10 11:02:25

相關問題