当我做如下事情时:
$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包含每个未删除的用户,而不仅仅是加载的$site中的用户。
我做错什么了?
因为 find_all() 和 find() 方法将重置模型状态。例如, $user 有一个 where('site_id', '=', <site_id>) 条件(应用于代码的第1行)。当你打电话 (查找) , 奥姆 重置所有条件,因此 $nondeletedusers 使用空模型。
find_all()
find()
$user
where('site_id', '=', <site_id>)
(查找)
$nondeletedusers
为了避免这种行为,你可以尝试 clone $users,或从中检索所有用户ID $用户 并添加 AND WHERE id IN <id list> 条件。
clone
$用户
AND WHERE id IN <id list>