Итак, у меня есть две модели настройки, Пользователь и Пост. Сообщение имеет belongsTo
настройка пользователя и пользователь имеет hasMany
настройка для сообщений.
Получая все мои сообщения, я хочу убедиться, что пользователь не забанен. Banned — это int в базе данных в столбце с именем ban
и я хочу убедиться, что он равен 0. Сначала я просматривал сообщения, проверял, не заблокирован ли пользователь, а затем помещал его в массив и передавал этот массив представлению, которое работало нормально. Однако теперь я хочу включить paginate, и он не работает, потому что я не передаю красноречивый объект.
Вот мой красноречивый прямо сейчас:
$posts = Post::where('status', '>', 1)->orderBy('published_date', 'desc')->paginate(10);
использование whereHas()
$posts = Post::where('status', '>', 1)->whereHas('user', function($q) {
$q->where('ban', 0);
})->orderBy('published_date', 'desc')->paginate(10);
Я полагаю, у вас есть user
отношение к User
модель из Post
модель.
Других решений пока нет …