我正在创建一个laravel待办事项应用程序。在我的控制器中,有不同的方法,但是其中的所有代码几乎都是相同的。在notCompleted方法和completed方法中,还有1个不同的where子句。除此之外,所有代码都是相同的。我如何在这里避免代码重复?
public function all()
{
$user_id = $this->user_id;
$todos = $this->todos
->where('user_id', $user_id)
->orderBy('id', 'DESC')->paginate(15);
return view('todos.index', compact('todos'));
}
public function notCompleted()
{
$user_id = $this->user_id;
$todos = $this->todos
->where('user_id', $user_id)
->where('completed', false)
->orderBy('id', 'DESC')->paginate(15);
return view('todos.index', compact('todos'));
}
public function completed()
{
$user_id = $this->user_id;
$todos = $this->todos
->where('user_id', $user_id)
->where('completed', true)
->orderBy('id', 'DESC')->paginate(15);
return view('todos.index', compact('todos'));
}
我需要三种不同的方法,因此我保留了这些方法并将代码提取为一种方法。并可能节省代码重复。是不是
并感谢所有回应我的人:)
public function all()
{
return $this->todoStatus('all');
}
public function index()
{
return $this->todoStatus('current', false);
}
public function completed()
{
return $this->todoStatus('completed', true);
}
protected function todoStatus($completed, $status = false)
{
$user_id = $this->user_id;
if($completed === 'all') {
$todos = $this->todos
->where('user_id', $user_id)
->orderBy('id', 'DESC')->paginate(15);
return view('todos.index', compact('todos'));
} else {
$todos = $this->todos
->where('user_id', $user_id)
->where('completed', $status)
->orderBy('id', 'DESC')->paginate(15);
return view('todos.index', compact('todos'));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句