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()find()メソッドはモデルの状態をリセットします。たとえば$userwhere('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 に答える