laravel移动查询控制器

时间:2013-10-29 02:49:59

标签: php sql laravel

在我的控制器中,我产生了一些查询,两者在从同一个表中选择的数据非常相似,一个是我的分页,另一个是根据某人搜索的内容返回值。

两个查询都以$ data = equipment :: DB('... leftjoin ... leftjoin ... leftjoin开头,一个以paginate(15)结尾,另一个以where(...)结束。两个都工作很棒,但据我了解,控制器旨在引导流量而不是查询数据。

$equipment = DB::table('equipment')->select('equipment.id','UnitNo','Description', 'SerialNo','Make','Model','SiteName','Year')
    ->leftJoin('sites', 'site_id', '=', 'sites.id')
        ->leftJoin('makes', 'make_id', '=', 'makes.id')
            ->leftJoin('models', 'model_id', '=', 'models.id')
    ->orderBy($this->sortcol,$this->direction)
        //->get()
        ->paginate(15);



    $this->layout->content = View::make('equipment.index')
        ->with('equipment', $equipment)
        ->with('sortcol', $this->sortcol)
        ->with('direction', $this->direction)
        ->with('page', $this->page);   //, compact('equipment'));

我希望减小控制器的大小并重构此代码,以便它更具可重用性。

我可以在模型中设置一个返回数据第一部分的函数,然后将最终部分添加到结尾,例如:

控制器: $ data = Equipment :: modelFunction() - paginate(15)

型号:

public function modelFunction(){
return DB::table('equipment')->select('equipment.id','UnitNo','Description',   'SerialNo','Make','Model','SiteName','Year')
->leftJoin('sites', 'site_id', '=', 'sites.id')
    ->leftJoin('makes', 'make_id', '=', 'makes.id')
        ->leftJoin('models', 'model_id', '=', 'models.id')

}

这是正确的方法吗?

0 个答案:

没有答案