sql builder中的多个BETHER语句
我正在使用Laravel4SQLBuilder创建一个相当大的查询。它大致看起来像,从表中获取数据 where(yada-yada)和where年龄介于(yada,yada)之间或介于(yada,yada)和where(yad-yada)之间 但我想要的是这个 where(yada-yada)和where(年龄介于(yada,yada)或(yada,yada)和where(yad-yada)之间) 一些代码:sql builder中的多个BETHER语句,sql,laravel-4,builder,parentheses,Sql,Laravel 4,Builder,Parentheses,我正在使用Laravel4SQLBuilder创建一个相当大的查询。它大致看起来像,从表中获取数据 where(yada-yada)和where年龄介于(yada,yada)之间或介于(yada,yada)和where(yad-yada)之间 但我想要的是这个 where(yada-yada)和where(年龄介于(yada,yada)或(yada,yada)和where(yad-yada)之间) 一些代码: $query = Subject::grabBasic();// start
$query = Subject::grabBasic();// start writing query, which results to grab.
$agelength = sizeof($fromAgeValue);
$count = 0;
$ageflag = 0;
foreach( array_combine($fromAgeValue, $toAgeValue) as $from=>$to ){
$count+=1;
if($ageflag==0){
if(($from!=null)&&($to!=null)){
$query = Subject::addfromAgeToAge($query, $from, $to);
$ageflag=1;
}
}else if(($from!=null)&&($to!=null)){
$query = Subject::orfromAgeToAge($query, $from, $to);
}
}
。。。继续添加到$query
主题代码:
static function addfromAgeToAge($query, $fromAge, $toAge){
return $query->whereBetween('Age', array($fromAge, $toAge));
}
static function orfromAgeToAge($query, $fromAge, $toAge){
return $query->orWhereBetween('Age', array($fromAge, $toAge));
}
那么,有没有一种方法可以编写addToAge生成器函数来接收fromage和toage值的数组并创建一条语句,当将该语句添加到查询的其余部分时,将给出所需的结果。e-g。sql查询将在正确的位置使用括号
我也希望在没有原始查询的情况下执行此操作,我怀疑有一种方法可以执行此操作,但我一直无法找到它
谢谢,我使用了原始查询:( 这是它的样子
$agecounter = 0;// tells me how many from age to age pairs were filed out coorrectly.
foreach( array_combine($fromAgeValue, $toAgeValue) as $from=>$to ){
if(($from!=null)&&($to!=null)){
$agecounter+=1;
}
}
$agelength = sizeof($fromAgeValue);
$ageflag = 0;
foreach( array_combine($fromAgeValue, $toAgeValue) as $from=>$to ){
if($ageflag==0){
if(($from!=null)&&($to!=null)){
$query = Subject::addfromAgeToAge($query, $from, $to, $agecounter); // ages put in for loop when multiple are added.
$ageflag=1; // add or's
$agecounter -=1;
}
}else if(($from!=null)&&($to!=null)){
$query = Subject::orfromAgeToAge($query, $from, $to, $agecounter);
$agecounter -=1;
}
}
在我的模型中:
static function addfromAgeToAge($query, $from, $to, $count){
if($count>1){
return $query->whereRaw('( Age between ? and ?', array($from, $to));
}
return $query-> whereBetween('Age', array($from, $to));
}
static function orfromAgeToAge($query, $from, $to, $count){
if($count==1){
return $query->orWhereRaw(' Age between ? and ?)', array($from, $to));
}
return $query->orWhereRaw(' Age between ? and ?', array($from, $to));//('Age', array($fromAge, $toAge));
}
希望这有助于其他人将()放入查询生成器中