在我的控制器中,我产生了一些查询,两者在从同一个表中选择的数据非常相似,一个是我的分页,另一个是根据某人搜索的内容返回值。
两个查询都以$ 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')
}
这是正确的方法吗?