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