2016-12-25 78 views
0

我是Laravel的新手,並構建一個小型的Laravel 5.3應用程序,提供免費的內容文件以及購買文件。Laravel Complex查詢

我希望用戶自動訪問免費文件(可能會定期添加的內容)。

我有一個產品,購買(數據透視)和用戶表。

當用戶登錄時,如何查詢產品表,如下所示:選擇所有免費產品(price = 0)或加入購買users.user_id = purchases.user_id和products.id =購買的商品。 PRODUCT_ID?

任何想法,還是有更好的方法來完成同樣的事情?

感謝

回答

1

怎麼樣,如果你使用下面的查詢:

$purchasedProducts = DB::table('purchases') 
      ->join('products', 'products.id', '=', 'purchases.product_id') 
      ->select('purchases.*', 'products.*') 
      ->where([ 
       ['purchases.user_id', '=', $loggedinUserId], 
       ['products.price', '=', 0], 
       ]) 
      ->get(); 
0

如果您已經定義userproduct之間的關係,那麼你可以使用orWhereHas作爲查詢它:

Product::where('price', 0) 
     ->orWhereHas('users', function ($q) user($user) { 
      $q->where('user_id', $user->id); 
     }) 
     ->get(); 

假設您的關係名稱是users