eloquent查询构建器laravel 5.6中的未知列

时间:2018-03-16 15:05:58

标签: php laravel eloquent laravel-5.6

gwrcategory和gwrproces之间的关系是一对多的。在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 %)

这会出错:SQLSTATE [42S22]:找不到列:1054未知列' gwr_categories.id'在' where子句'。

我已经在phpmyadmin中使用了查询,这似乎让它运行起来。我只将gwr_categories添加到第一个select *中。

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 '%')

我的问题是:如何说服eloquent添加正确的列或重写代码以使其在gwrproces和gwrlist表中搜索列中的特定文本,同时保持与类别的关系?

编辑:我使用预先加载,因此with() - > get()

1 个答案:

答案 0 :(得分:1)

问题在于您执行嵌套查询 你也不能像这样使用急切的加载。

删除->with('gwrlist')->get()