动态 eloquent 查询注入在 laravel 中不起作用

Dynamic eloquent query injecting is not working in laravel

我正在尝试使用如下表单输入构建动态查询:

 $query = new Doctor();

 if (!empty($request->input('city'))) {
    $city = $request->input('city');
    //Search for any thing like doctor name or last name
    $query->where('city_id', $city);
 }


  //Get doctor names result in collection type
  $col = $query->where('level','LIKE','%%')->orderBy($Order_By, $Sort_Type)->toSql();

问题是检查城市并将城市 where 子句注入查询的部分不起作用,我得到的查询是:

"select * from `doctors` where `level` LIKE ? order by `profile_views` desc"

如果我改变逻辑并将 city where 子句放在单行中,例如:

 $col = $query->where('city_id', $city)->where('level','LIKE','%%')->orderBy($Order_By, $Sort_Type)->toSql();

这个查询的结果是:

"select * from `doctors` where `city_id` is null and `level` LIKE ? order by `profile_views` desc"

如何使第一个逻辑起作用?

$query = new Doctor();

创建了一个新的 Doctor,但你并不真的想要那个。相反:

$query = Doctor::query();

针对 Doctor 模型创建一个新的 query,然后可以使用 where() 等东西对其进行扩展。