Kohanav3 ORM:致电凡 - > find_all两次
-
26-09-2019 - |
题
当我做类似的情况如下:
$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包含所有非删除的用户,不只是在加载$网站的人。
我在做什么错了?
解决方案
由于find_all()
和find()
方法将其重置模型状态。例如,$user
具有where('site_id', '=', <site_id>)
条件(它是在代码中的行#1施加)。当你调用find_all()
, ORM 重置所有条件,所以$nondeletedusers
空样板工程。
要避免这种情况,你可以尝试clone
$用户,或者从$user
检索所有用户ID和添加AND WHERE id IN <id list>
条件。
不隶属于 StackOverflow