我想弄清楚创建新行的最佳做法是什么。
假设我们在控制器中有这个:
$this->noteRepository->addNote($request->user(), $name, $note);
addNote
类中noteRepository
方法的两个工作解决方案,例如:
选项1 - 这将使用noteModel
public function addNote($user, $name, $note)
{
return $this->noteModel->create([
'user_id' => $user->id,
'name' => $name,
'note' => $note,
]);
}
选项2 - 用户模型中有notes()
方法。
public function addNote($user, $name, $note)
{
return $user->notes()->create([
'user_id' => $user->id,
'name' => $name,
'note' => $note,
]);
}
在user
模型中,如下所示:
public function notes()
{
return $this->hasMany(Note::class);
}
建议使用哪种方法?为什么?
答案 0 :(得分:3)
选项2通过以下修改看起来更好:
public function addNote($user, $name, $note)
{
return $user->notes()->create([
'name' => $name,
'note' => $note,
]);
}
这是因为您不必手动设置FK,它更优雅,更易读。这样你就可以充分利用Laravel。
<强>优点强>