动态雄辩查询注入不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" 

我怎样才能使第一逻辑工作?

+2

我猜'$ city'可能是空的。你用'var_dump($ city)'检查了它吗? –

+1

要扩展@ aynber的语句,您可能需要'$ query = Doctor :: query();' - 尽管我怀疑Bill是*也*是正确的。 – ceejayoz

+0

@BillKarwin它与$ city的值没有关系,因为我为它设置了一个字符串值,但它仍然没有显示在查询中。 –

$query = new Doctor(); 

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

$query = Doctor::query(); 

创建一个新的查询对医生的模型,然后可以用where()等东西延伸。