Обзор подходящего запроса Laravel в отношении - PullRequest
0 голосов
/ 01 июня 2019
$listing = Listing::orderBy('created_at','DESC')->where('user_id', Auth::User()->id)
->with('reviews')
->with('posts')
->get();

Как я могу отфильтровать порядок проверки, когда я попробую это

 ->whereHas('reviews', function ($query) {
            $query->where('status', 'Public');
        })->orderBy('created_at','DESC')

Я хочу, чтобы я пытался использовать orderBy при просмотре, но когда я пытаюсь заказать OrderBy при просмотре, его фильтр также публикуется, но я не хочу оставлять сообщения, поэтому, пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Вы можете применить больше фильтров в функции whereHas, но чтобы применить больше условий, таких как упорядочение и ограничение, вы должны сделать это при вызове функции with для правильной взаимосвязи, которую вы будете загружать.

$listing = Listing::where('user_id', Auth::User()->id)
    ->with(['reviews' => function ($query) {
        return $query->orderByDesc('created_at');
    }, 'posts'])
    ->whereHas('reviews', function ($query) {
        return $query->where('status', 'Public');
    })
    ->orderByDesc('created_at')
    ->get();
0 голосов
/ 01 июня 2019

попробуйте этот запрос:

$listing = Listing::where('user_id', Auth::User()->id)
->with(['reviews','posts'])
->whereHas('reviews', function ($query) {
        $query->where('status', 'Public')->orderBy('created_at','DESC');
    })
->orderBy('created_at','DESC')
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...