2015-09-18 2 views
0

Предполагается, что у нас есть пользователи, друзья и рестораны. Не хотите углубляться в настройку модели и отношений.Laravel> вложенная нетерпимая нагрузка с ограничением

Хотя я как пользователь вошел в систему: Как я могу получить всех друзей, которые являются «клиентами» в ресторане?

У меня есть это, и это уже работает:

$friends = array_dot(Auth::user()->friends()->select('users.id')->get()); 

$customers = Restaurant::with(['users' => function($query) use($friends) { 
    $query->whereIn('users.id', $friends); 
}])->find(restaurant_id); 

Но это возможно даже с помощью одного запроса?

ответ

0

Похоже, вы хотите найти всех своих друзей, которые имеют отношение к ресторану. Если это так, вы ищете whereHas(). Основная идея:

$restaurantId = 1; 
$user = Auth::user(); 

$friendCustomers = $user->friends()->whereHas('restaurant', function ($query) use ($restaurantId) { 
    $query->where('id', $restaurant_id); 
})->get(); 

Вы можете прочитать больше о запрашивая отношения, и whereHas, here.

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