0

当我执行以下操作时:

$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 中的用户。

我究竟做错了什么?

4

1 回答 1

0

因为find_all()andfind()方法会重置你的模型状态。例如,$user有一个where('site_id', '=', <site_id>)条件(它已应用于代码的第 1 行)。当您调用时find_all()ORM会重置所有条件,因此$nondeletedusers适用于空模型。

为避免这种行为,您可以尝试clone$users,或从中检索所有用户 ID$user并添加AND WHERE id IN <id list>条件。

于 2010-09-10T05:42:33.560 回答