В Laravels Eloquent как получить записи о взаимоотношениях? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь получить все записи, которые имеют отношение события, которое имеет дату события сегодня.У меня есть следующий код:

    EventStaffStation::with([
        'event' => function($query) {
            $query->where('event_date', Carbon::now()->format('d-m-Y'));
        }
    ])->where([
        'staff_id' => auth()->user()->id
    ])->has('event')->get()

Это дает мне запись event_staff_stations, но устанавливает отношение события к нулю.Я хочу, чтобы запись не возвращалась, если отношение равно нулю.

В принципе, если запись event_staff_station не на сегодня, то я не хочу, чтобы она возвращалась.Меня интересуют только записи с сегодняшним днем ​​событий.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы должны использовать whereHas и with.

whereHas, чтобы проверить существование отношения, а with вернет запись с объектом отношения.

EventStaffStation::whereHas(
    'event' , function($query) {
        $query->where('event_date', Carbon::now()->format('d-m-Y'));
    }
)->with('event')
->where([
    'staff_id' => auth()->user()->id
])->get();
0 голосов
/ 27 сентября 2018

Вы должны использовать:

EventStaffStation::whereHas(
    'event' , function($query) {
        $query->where('event_date', Carbon::now()->format('d-m-Y'));
    }
)->where([
    'staff_id' => auth()->user()->id
])->get()

Если вы хотите получать записи, основанные на существовании / состоянии отношений, вы должны использовать has/whereHas вместо with.Конечно, в приведенном выше запросе вы также можете добавить with, который при необходимости загрузит любые отношения, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...