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();
Содержимое $ delededUsers верно, но $ nondeletedusers содержит каждый не удаленный пользователь, а не только те на загруженных $.
Что я делаю неправильно?
Решение
Это из-за find_all()
а также find()
Методы будут сбросить ваше модели. Например, $user
имеет where('site_id', '=', <site_id>)
Состояние (это было применено в линии № 1 вашего кода). Когда вы называете find_all()
, Омм сбрасывает все условия, так $nondeletedusers
Работает с пустой моделью.
Чтобы избежать такого поведения, вы можете попробовать clone
$ пользователи или извлеките все идентификаторы пользователей из $user
и добавить AND WHERE id IN <id list>
условие.
Не связан с StackOverflow