Я работаю с двумя моделями, UserType
и User
- UserType
hasManyUser
.Laravel 4.2 - Использование, где пункт о связанных таблицах
Я пытаюсь получить список пользователей, связанных с UserType, который имеет свойство receive_email
, установленное в 1 (true).
Я попытался:
$userGroups = UserType::with(['Users' => function($query) {
$query->whereReceiveEmail(1)->whereNotNull('email')->whereNull('status');
}])->whereIn('id', [10, 1])->get();
и где положение, кажется, полностью игнорируется. Из Laravel 4.2 Docs -
$users = User::with(array('posts' => function($query)
{
$query->where('title', 'like', '%first%');
}))->get();
Я видел много людей говорят, что это не правильный способ использовать нетерпеливые ограничения загрузки, но я действительно не знаю, что это было бы, они, кажется, не делать ничего. Итак, короткий вопрос, как я могу получить список Users
с receive_email
, установленным в 1 через отношение UserType
?
UPDATE Может кто-нибудь объяснить мне, что пример кода из документации выше предполагается сделать? Я предполагаю, что он должен возвращать сообщения, связанные с пользователями, которые соответствуют ограничению наличия заголовка LIKE «первым». В моем случае я пытаюсь найти пользователей, связанных с UserTypes, где каждый пользователь имеет receive_email
, установленный в 1. Единственные существенные различия между моим кодом и примером кода - это то, что я применяю whereIn()
, а имена моделей разные.
Итак, с результатами, приведенными в данном примере, можно было бы утверждать следующее?
foreach ($users as $user) {
foreach ($user->posts as $post) {
// matching posts with titles LIKE "first"
}
}
Вам нужно 'whereHas'. Но ваш вопрос неясен - вы говорите о Пользователях, связанных с UserType, соответствующих некоторым условиям, но вместо этого вы запрашиваете Пользователей. –
Если вы имеете в виду второй фрагмент кода, это из документов Laravel 4.2 (как уже упоминалось). Если вы ссылаетесь на первый, 'UserType' является моделью, которую я запрашиваю. И не могли бы вы объяснить, где, как это относится к этому? – NightMICU
Нет, я не имею в виду пример документов, но ваш. Лукас уже дал вам код, поэтому вы знаете, что там не так. –