0

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

两个查询都以 $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')

}

这是正确的方法吗?

4

0 回答 0