当我做以下事情时:
$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中的用户。
我做错了什么?
答案 0 :(得分:0)
由于find_all()
和find()
方法,它会重置您的模型状态。例如,$user
具有where('site_id', '=', <site_id>)
条件(它已应用于代码的第1行)。当您致电find_all()
时, ORM 会重置所有条件,因此$nondeletedusers
适用于空模型。
要避免此行为,您可以尝试clone
$个用户,或从$user
检索所有用户ID并添加AND WHERE id IN <id list>
条件。