dqwmhrxt68679 2018-04-09 00: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 01: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"] . '%');
            });
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?