Laravel复杂查询

时间:2016-12-25 04:04:45

标签: php sql laravel orm eloquent

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

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

我有产品,购买(枢轴)和用户表。

当用户登录时,如何查询产品表,如下所示:选择所有免费产品(价格= 0)或加入购买,其中users.user_id = purchases.user_id和products.id = purchases.product_id ?

任何想法,还是有更好的方法来完成同样的事情?

由于

2 个答案:

答案 0 :(得分:1)

如果您使用以下查询怎么样:

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

答案 1 :(得分:0)

如果您已定义了userproduct之间的关系,那么您可以使用orWhereHas进行查询:

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

假设您的关系名称为users