2016-12-25 3 views
0

私はLaravelの新機能で、無料のコンテンツファイルと購入用のファイルを提供する小さなLaravel 5.3アプリケーションを構築しています。Laravel Complexクエリ

無料のファイル(定期的に追加できるコンテンツ)にユーザーが自動的にアクセスするようにします。

私は製品、購入(ピボット)とユーザーテーブルがあります。

ユーザーがログインしている場合、次のような製品テーブルを照会するにはどうすればよいですか:users.user_id = purchases.user_idとproducts.id = purchasesのすべての無料製品を選択します(価格= 0)。製品番号?

いずれかのアイデア、または同じことを達成するためのより良い方法はありますか?

おかげでどのように次のクエリを使用する場合について

答えて

1

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

:あなたはuserproduct間の関係を定義した場合、あなたのようにorWhereHasを使用して照会することができ

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

あなたの関係名がusersであると仮定します。