2015-06-11 18 views
0

我有2個型號:ProductCarousel。他們倆都建立了Many To Many關係。我有一個pivotcarousel_productgroupBy在QueryBuilder中只返回1個特定ID的結果集laravel 5

透視表,我有幾個DATAS像這樣:

id carousel_id product_id created_at updated_at 
1   2    2   --    -- 
2   2    3   --    -- 
3   2    4   --    -- 
4   2    5   --    -- 
5   2    6   --    -- 
6   3    7   --    -- 
7   3    8   --    -- 
8   3    9   --    -- 
9   3    10   --    -- 
10   3    11   --    -- 

現在我想取回所有處於carousel_id = 2carousel_id = 3

對於這個產品,我使用查詢生成器中我的控制器:

public function index() 
{ 
    $carousels = Carousel::where('display', 'Enabled')->get(); 
    $products = DB::table('carousel_product AS cp') 
       ->join('products AS p', 'p.id', '=', 'cp.product_id') 
       ->join('carousels AS c', 'c.id', '=', 'cp.carousel_id') 
       ->select(
        'p.id AS prod_id', 
        'p.name AS prod_name', 
        'p.code AS prod_code', 
        'p.short_description AS prod_short_desc', 
        'p.price AS prod_price', 
        'p.discount_price AS prod_disc_price' 
       )->groupBy('cp.carousel_id')->get(); 
    dd($products); 
    return view('home', compact('carousels', 'products')); 
} 

dd($products)輸出是2和01

我想要那個特定的所有產品carousel_id,並將其顯示在我的視圖中,以便只顯示該旋轉木馬。

評分:所有的值都來自數據庫。

我該如何做到這一點?

回答

0

GROUP BY是一個聚合函數。您描述的行爲是否應該如何工作 - 它將所有具有相同cp.carousel_id的行合併爲一個,並允許您對集合執行集合函數,如MAX,SUMAVG等。

現在我想取回所有處於carousel_id = 2和carousel_id產品= 3

你想whereIn('carousel_id', [2, 3])了點。

+0

什麼也沒做..它返回了我在'select()'方法中傳遞的產品的一切,沒有任何'carousel_id'組。這意味着它將每件產品從'product_id = 2'返回到'product_id = 11'。如果你不介意,你可以幫我解碼嗎? –

相關問題