2015-09-18 36 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(); 

你可以閱讀更多有關查詢的關係,whereHashere