首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拉勒维尔用多张桌子雄辩地说“有”和“哪里”

拉勒维尔用多张桌子雄辩地说“有”和“哪里”
EN

Stack Overflow用户
提问于 2018-04-09 08:17:20
回答 1查看 2.1K关注 0票数 1

我的项目有三张桌子:

  1. 商场
  2. 商店
  3. 产品

我有一个页面可以在整个数据库中搜索产品。我需要一个选项,在那里他们可以根据商场的名称搜索产品。所以我构建了这样的代码:

代码语言:javascript
运行
复制
$query = Product::with('shop', 'shop.mall');

if (!empty($data["keyword"])) {
    $query = $query->where(function($q) use($data) {
         $q->where('shop.mall.name', 'LIKE', '%' . $data["keyword"] . '%')->orWhere('shop.mall.keyword', 'LIKE', '%' . $data["keyword"] . '%');
    });
}

但是它显示了这个错误:

代码语言:javascript
运行
复制
Column not found: 1054 Unknown column 'shop.mall.name' in 'where clause'

我的查询有什么问题吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-09 09:02:07

要在关系中搜索,请使用whereHas()创建子查询,并返回在shop.mall中过滤的数据。

代码语言:javascript
运行
复制
    $query = Product::with('shop', 'shop.mall');

    if (!empty($data["keyword"])) {
        $query = $query->whereHas('shop.mall',function($q) uses ($data){
            $q->where('name', 'LIKE', '%' . $data["keyword"] . '%')->
              orWhere('keyword', 'LIKE', '%' . $data["keyword"] . '%');
        });
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49728362

复制
相关文章

相似问题

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