Php 带多条件过滤器的雄辩where子句
在我的数据库表中,我有一个名为student add的表,我想获取具有以下所有条件的特定学生,这些条件存储在过滤器数组中,并带有其他选项(“like name可以是middlename或lastname”) 我正试图用以下代码获取该数据 我在这里使用的是advance where子句,但它在第一个参数(如名称)中运行,这只意味着我得到了valuewhere name=filters['value']为什么会这样Php 带多条件过滤器的雄辩where子句,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,在我的数据库表中,我有一个名为student add的表,我想获取具有以下所有条件的特定学生,这些条件存储在过滤器数组中,并带有其他选项(“like name可以是middlename或lastname”) 我正试图用以下代码获取该数据 我在这里使用的是advance where子句,但它在第一个参数(如名称)中运行,这只意味着我得到了valuewhere name=filters['value']为什么会这样 为什么在查询中使用case?只需使用多个where子句编写2,并使用if语句:)为该
为什么在查询中使用case?只需使用多个where子句编写2,并使用
if
语句:)为该SQL选择它
select * from `students` where ((`firstname` = ? or `middlename` = ? or `lastname` = ?) and `rollnumber` = ?)
$student = Student::where(function ($query) use ($filters) {
foreach($filters as $filter) {
switch($filter['type']){
case 'name' :
$query->where(function ($query) use ($filter) {
$query->where('firstname', $filter['value'])
->orWhere('middlename', $filter['value'])
->orWhere('lastname', $filter['value']);
});//This will add a parenthesis for all wheres
break;
case 'roll' :
$query->where('rollnumber', $filter['value']);
break;
}
}
})
->get();//Replace get with toSql to see SQL
对于此SQL
select * from `students` where ((`firstname` = ? or `middlename` = ? or `lastname` = ?) or `rollnumber` = ?)
$student = Student::where(function ($query) use ($filters) {
foreach($filters as $filter) {
switch($filter['type']){
case 'name' :
$query->orWhere(function ($query) use ($filter) {//add or where for or where
$query->where('firstname', $filter['value'])
->orWhere('middlename', $filter['value'])
->orWhere('lastname', $filter['value']);
});//This will add a parenthesis for all wheres
break;
case 'roll' :
$query->orWhere('rollnumber', $filter['value']);//add or where for or where
break;
}
}
})
->get();//Replace get with toSql to see SQL
select * from `students` where ((`firstname` = ? or `middlename` = ? or `lastname` = ?) and `rollnumber` = ?)
$student = Student::where(function ($query) use ($filters) {
foreach($filters as $filter) {
switch($filter['type']){
case 'name' :
$query->where(function ($query) use ($filter) {
$query->where('firstname', $filter['value'])
->orWhere('middlename', $filter['value'])
->orWhere('lastname', $filter['value']);
});//This will add a parenthesis for all wheres
break;
case 'roll' :
$query->where('rollnumber', $filter['value']);
break;
}
}
})
->get();//Replace get with toSql to see SQL
select * from `students` where ((`firstname` = ? or `middlename` = ? or `lastname` = ?) or `rollnumber` = ?)
$student = Student::where(function ($query) use ($filters) {
foreach($filters as $filter) {
switch($filter['type']){
case 'name' :
$query->orWhere(function ($query) use ($filter) {//add or where for or where
$query->where('firstname', $filter['value'])
->orWhere('middlename', $filter['value'])
->orWhere('lastname', $filter['value']);
});//This will add a parenthesis for all wheres
break;
case 'roll' :
$query->orWhere('rollnumber', $filter['value']);//add or where for or where
break;
}
}
})
->get();//Replace get with toSql to see SQL