动态雄辩查询注入不laravel
问题描述:
工作我试图使用像下面表单输入构建动态查询:动态雄辩查询注入不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"
如果我改变逻辑,把城市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();
创建一个新的医生,但你并不真的想要那个。相反:
$query = Doctor::query();
创建一个新的查询对医生的模型,然后可以用where()
等东西延伸。
我猜'$ city'可能是空的。你用'var_dump($ city)'检查了它吗? –
要扩展@ aynber的语句,您可能需要'$ query = Doctor :: query();' - 尽管我怀疑Bill是*也*是正确的。 – ceejayoz
@BillKarwin它与$ city的值没有关系,因为我为它设置了一个字符串值,但它仍然没有显示在查询中。 –