我的项目有三张桌子:
我有一个页面可以在整个数据库中搜索产品。我需要一个选项,在那里他们可以根据商场的名称搜索产品。所以我构建了这样的代码:
$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"] . '%');
});
}
但是它显示了这个错误:
Column not found: 1054 Unknown column 'shop.mall.name' in 'where clause'
我的查询有什么问题吗?谢谢
发布于 2018-04-09 09:02:07
要在关系中搜索,请使用whereHas()创建子查询,并返回在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"] . '%');
});
}
https://stackoverflow.com/questions/49728362
复制相似问题