2016-12-25 72 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