首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel复合查询

Laravel复合查询
EN

Stack Overflow用户
提问于 2016-12-25 04:04:45
回答 2查看 47关注 0票数 0

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

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

我有一个产品,采购(枢轴)和用户表。

当用户登录时,我如何像下面这样查询products表:选择所有免费产品(price=0)或参加users.user_id = purchases.user_id和products.id = purchases.product_id的采购?

有什么想法吗?还是有更好的方法来完成同样的事情?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-25 04:59:49

如果您使用以下查询,情况如何:

代码语言:javascript
复制
$purchasedProducts = DB::table('purchases')
            ->join('products', 'products.id', '=', 'purchases.product_id')
            ->select('purchases.*', 'products.*')
            ->where([
               ['purchases.user_id', '=', $loggedinUserId],
               ['products.price', '=', 0],
               ])
            ->get();
票数 1
EN

Stack Overflow用户

发布于 2016-12-25 06:00:57

如果您已经定义了userproduct之间的关系,那么可以使用orWhereHas查询它,如下所示:

代码语言:javascript
复制
Product::where('price', 0)
        ->orWhereHas('users', function ($q) user($user) {
            $q->where('user_id', $user->id);
        })
        ->get();

假设您的关系名是users__。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41318596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档