Laravel复杂查询



我是Laravel的新手,并构建了一个小的Laravel 5.3应用程序,该应用程序提供免费的内容文件以及用于购买的文件。

我希望用户自动可以访问免费文件(可以定期添加的内容)。

我有一个产品,购买(Pivot)和用户表。

当用户登录时,如何查询产品表如下:选择所有免费产品(价格= 0)或在users.user_id = puplases.user_id and productss.idss.id = products.product_id.product_id的user.user_id = product.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();

如果您定义了userproduct之间的关系,则可以使用orWhereHas AS查询它:

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

假设您的关系名称是users