2015-01-19 1 views
0

Я делаю веб-приложение, которое включает в себя запрос, как показано ниже:Laravel фильтрование «с» приводит

$entry = Entry::with([ 
    'elements', 
    'competition.groups.fields', 
    'competition.groups.reviews' 
])->find($id); 

То, что я хотел бы сделать, это добавить что-то вдоль линий:

$entry = Entry::with([ 
    'elements', 
    'competition.groups.fields', 
    'competition.groups.reviews' -> where('user_id', '=', Auth::user()->id) 
])->find($id); 

Так что я хотел бы получить отзывы, которые принадлежат записи, где user_id обзора также совпадает с пользователем, который в настоящий момент вошел в систему. Есть ли способ сделать это?

ответ

1

Вы можете просто добавить укупорочное для фильтрации with результаты:

$entry = Entry::with([ 
    'elements', 
    'competition.groups.fields', 
    'competition.groups.reviews' => function($q){ 
     $q->where('user_id', '=', Auth::id()); // Replaced Auth::user()->id with a shortcut: Auth::id() 
    } 
])->find($id); 
-1

Вы можете попробовать этот код тоже ..

$entry = Entry::select('elements', 'competition.groups.fields', 'competition.groups.reviews')->where('user_id', '=', Auth::user()->id)->get(); 

Этот код будет захватывать коллекцию Entries, которые принадлежат текущему пользователю, вошедшего в систему.

Если нет записей присутствует Entries счетчик коллекция будет равна нулю. Если какие-то записи существуют, вы можете просмотреть свойства коллекции и захватить записи.

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