2017-01-17 4 views
3

У меня есть 3 моделиLaravel - Красноречивый hasManyThrough запроса

Event - таблица ('событий') Shift - таблицы ('сдвиги') Workedtime - таблица ('workedtimes')

и я могу позвонить event->shifts->workedtimes все прекрасно там

А теперь я хочу, чтобы сделать запрос, чтобы получить все события, где (Auth) пользователь работал

Что-то вроде этого:

Event::with('workedtimes')->where('workedtimes.uid', Auth::user()->id)->get(); 

Но это не сработает. Пожалуйста помоги.

ответ

2

Чтобы получить все события, идентифицированный пользователь работал вам нужно использовать метод whereHas():

$events = Event::whereHas('workedtimes', function($q) { 
    $q->where('uid', auth()->user()->id); 
})->get(); 
+1

Это тот! Спасибо! – lewis4u

0

Возможно, вы ищете Constraing eager loading. Запрос:

Event::with(['workedtimes' => function ($query) { 
     $query->where('uid', Auth::user()->id); 
    }])->get(); 
+0

я копия вставил свой ответ, и я получил ошибку .... тогда я копию вставил ответ от Алексея, и это сработало сразу ... :( – lewis4u

+0

@ lewis4u это нормально, но, он не должен давать ошибку. Какую ошибку вы получили? –

+0

Я пробовал снова, и на самом деле это не функциональная ошибка, но вместо того, чтобы получать только события, в которых пользователь работал, я получаю ВСЕ события ... с вашим запросом я получаю 122 события и с кодом Алексея я получаю 9 – lewis4u

Смежные вопросы