Kohanav3 ORM: дважды вызывая where-> find_all - PullRequest
0 голосов
/ 10 июня 2010

Когда я делаю что-то вроде следующего:

$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();

Содержимое $ deleusers является правильным, но $ nondeletedusers содержит всех не удаленных пользователей, а не только тех, кто загружен на сайт $.

Что я делаю не так?

1 Ответ

0 голосов
/ 10 сентября 2010

Это из-за методов find_all() и find() сбросит состояние вашей модели.Например, $user имеет условие where('site_id', '=', <site_id>) (оно было применено в строке # 1 вашего кода).При вызове find_all(), ORM сбрасывает все условия, поэтому $nondeletedusers работает с пустой моделью.

Чтобы избежать такого поведения, вы можете попробовать clone $ пользователей или получить все идентификаторы пользователей из $user и добавить условие AND WHERE id IN <id list>.

...