我想在使用Laravel 5.1的SQL查询中使用一些搜索词。这是我的代码
foreach ($searchTerms as $term) {
$query->where(function($query) use ($query, $term){
$query->where("profiles.text", "LIKE", "%{$term}%")
->orWhere("protocols.text", "LIKE", "%{$term}%");
});
}
这是我从中得到的SQL:
where 'profiles'.'text' LIKE ? or 'protocols'.'text' LIKE ? and
'profiles'.'text' LIKE ? or 'protocols'.'text' LIKE ?
这就是我需要的SQL:
where ('profiles'.'text' LIKE ? or 'protocols'.'text' LIKE ?) and
('profiles'.'text' LIKE ? or 'protocols'.'text' LIKE ?)
如何获取正确的查询字符串?
感谢
皮达
答案 0 :(得分:3)
问题是,在你的关闭中你是"使用" $查询。 $ query作为参数传递,你不应该在use()块中再次声明它。
正确的代码是:
foreach ($searchTerms as $term) {
$query->where(function($query) use ($term){
$query->where("profiles.text", "LIKE", "%{$term}%")
->orWhere("protocols.text", "LIKE", "%{$term}%");
});
}
答案 1 :(得分:0)
试试这个
$query->where(function($query) use ($query, $term){
$query->where("profiles.text", "LIKE", "%{$term}%")
->orWhere("protocols.text", "LIKE", "%{$term}%");
});
$query->where(function($query) use ($query, $term){
$query->where("profiles.text", "LIKE", "%{$term}%")
->orWhere("protocols.text", "LIKE", "%{$term}%");
});