我是Laravel的新手,并构建了一个小型Laravel 5.3应用程序,提供免费内容文件以及购买文件 .
我希望用户能够自动访问免费文件(可以定期添加的内容) .
我有产品,购买(枢轴)和用户表 .
当用户登录时,如何查询产品表,如下所示:选择所有免费产品(价格= 0)或加入购买,其中users.user_id = purchases.user_id和products.id = purchases.product_id?
任何想法,还是有更好的方法来完成同样的事情?
谢谢
如果您使用以下查询怎么样:
$purchasedProducts = DB::table('purchases') ->join('products', 'products.id', '=', 'purchases.product_id') ->select('purchases.*', 'products.*') ->where([ ['purchases.user_id', '=', $loggedinUserId], ['products.price', '=', 0], ]) ->get();
如果已定义 user 和 product 之间的关系,则可以使用 orWhereHas 查询它:
user
product
orWhereHas
Product::where('price', 0) ->orWhereHas('users', function ($q) user($user) { $q->where('user_id', $user->id); }) ->get();
假设您的关系名称为 users .
users
2 回答
如果您使用以下查询怎么样:
如果已定义
user
和product
之间的关系,则可以使用orWhereHas
查询它:假设您的关系名称为
users
.