Php 可以在Laravel中拆分查询生成器吗?

Php 可以在Laravel中拆分查询生成器吗?,php,laravel,Php,Laravel,可以像这样拆分查询吗 public function getStatuses($dates) { $query = DB::table('tickets'); if ($dates['from']) $query = $query->where('from', $dates['from']); if ($dates['to']) $query = $query->where('to', $dates['to']);

可以像这样拆分查询吗

public function getStatuses($dates)
{
    $query = DB::table('tickets');

    if ($dates['from'])
        $query = $query->where('from', $dates['from']);

    if ($dates['to'])
        $query = $query->where('to', $dates['to']);

    $query = $query->select('Active');

    return $query->get()->toArray();
}

是的,这是可能的。但不要重新分配给同一个变量,否则可能会把它搞乱:

public function getStatuses($dates)
{
    $query = DB::table('tickets');
    if ($dates['from'])
        $query->where('from', $dates['from']);
    if ($dates['to'])
        $query->where('to', $dates['to']);
    $query->select('Active');
    return $query->get()->toArray();
}

在Laravel 4中,有必要将get方法指定给一个变量

public function scopeGetPosts($query, $this_user = NULL){
    $results = DB::table('post')
                ->select('*')
                ->where('post_status','=','publish');

    if( $this_user != NULL ){
        $results->where('post_author','=',$this_user->user_id);
    }

        $data = $results->orderBy('created_at', 'desc')
                ->get(); 

        if( empty( $results ) )
            $data = 'no results';

    return $data;
}
在拉拉维尔雄辩地说:

$query = ModelName::where('status',1);

if($userId){
 $query->where('user_id',$userId);
}

if($limit){
 $query->limit($limit);
}    

$result = $query->get();

我尝试了类似的方法,但对于仍在为该选项搜索解决方案的人来说,它并没有给出我想要的结果。。使用when()。。正如这里详述的。。。