Вопрос

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

$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> условие.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top