首页 文章

Laravel复杂查询

提问于
浏览
0

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

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

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

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

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

谢谢

2 回答

  • 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 .

相关问题