dqwmhrxt68679 2018-04-09 08:17
浏览 46
已采纳

Laravel雄辩地说“有”和“哪里”有多个表格

I've 3 tables on my project:

  1. Mall
  2. Shop
  3. Product

I've a page to search for products in the whole database. I need an option where they can search the product by the mall name. So I built my code like this:

$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"] . '%');
    });
}

But it is showing this error:

Column not found: 1054 Unknown column 'shop.mall.name' in 'where clause'

Is there any problem with my query? Thank you

  • 写回答

1条回答 默认 最新

  • dqbjvg2518 2018-04-09 09:02
    关注

    To search within relation use whereHas(), it creates subquery and returns data filtered in shop.mall.

        $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"] . '%');
            });
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看