假设我们有用户,朋友和餐馆。不想深入了解模型和关系设置。
当我作为用户登录时:我怎样才能让所有朋友成为餐厅的“顾客”?
我已经有了这个,而且它已经有效了:
$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 :(得分:0)
听起来你想找到与餐馆有关系的所有朋友。如果是这样,那么您正在寻找whereHas()
。总体思路:
$restaurantId = 1;
$user = Auth::user();
$friendCustomers = $user->friends()->whereHas('restaurant', function ($query) use ($restaurantId) {
$query->where('id', $restaurant_id);
})->get();
您可以阅读有关查询关系的更多信息,以及whereHas
,here。