当我做类似的情况如下:

$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>条件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top