动态 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()
等东西对其进行扩展。
我正在尝试使用如下表单输入构建动态查询:
$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()
等东西对其进行扩展。