【发布时间】:2014-02-07 22:36:17
【问题描述】:
我正在使用 laravel 4 sql builder 创建一个相当大的查询。它大致看起来像,从表中获取数据
where(yada yada)and where age between(yada, yada) or between(yada, yada) and where(yad yada)。
但我想要的是这个。
where(yada yada)and where (age between(yada, yada) or between(yada, yada)) and where(yad yada)。
一些代码:
$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 值的数组并创建一个语句,当添加到查询的其余部分时,将给出所需的结果。例如。 sql 查询将在正确的位置有括号。
我也想在没有原始查询的情况下执行此操作,我怀疑有一种方法可以做到这一点,我只是无法找到它。
谢谢,
【问题讨论】:
标签: sql laravel-4 builder parentheses