格类和格状过程之间的关系是一对多的。在gwrproces和gwrlist之间是多对一的。
我使用这段代码在数据中搜索。我现在使用%来查找所有东西,直到这件事奏效为止。
$searchresult = GwrCategory::
whereHas('gwrproces', function($query) use ($request){
$query->where('gwr_code', 'LIKE', '%'.$request->input('gwrcode').'%')->
whereHas('gwrlist', function($query) use ($request)
{
$query->where('versie', 'LIKE', '%');
}
)->with('gwrlist')->get();
}
)->with('gwrproces')->get();上面代码的结果sql是:
select * from `gwr_proces`
where `gwr_proces`.`gwr_category_id` = `gwr_categories`.`id` and `gwr_code` LIKE %20%
and exists
(select * from `gwr_lists`
where `gwr_proces`.`gwrlist_id` = `gwr_lists`.`id` and `versie` LIKE %)这导致错误: SQLSTATE42S22:列未找到:'where子句‘中的1054个未知列'gwr_categories.id’。
我在phpmyadmin中玩过这个查询,这似乎可以让它正常工作。我只将gwr_categories添加到第一个select * from中。
select * from `gwr_proces`,`gwr_categories`
where `gwr_proces`.`gwr_category_id` = `gwr_categories`.`id` and `gwr_code` LIKE '%'
and exists
(select * from `gwr_lists`
where `gwr_proces`.`gwrlist_id` = `gwr_lists`.`id` and `versie` LIKE '%')我的问题是:如何说服雄辩者添加正确的列或重写代码,使其在gwrproces和gwrlist表中搜索列中的特定文本,同时保持与类别的关系?
编辑:我使用急切加载,因此with()->get()
发布于 2018-03-16 15:31:57
问题在于您执行嵌套查询。
你也不能用这种急切的加载。
删除->with('gwrlist')->get()。
https://stackoverflow.com/questions/49323911
复制相似问题