创建条目(关系)的最佳做法?

时间:2016-11-27 16:36:00

标签: php laravel laravel-5

我想弄清楚创建新行的最佳做法是什么。

假设我们在控制器中有这个:

$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);
}

建议使用哪种方法?为什么?

1 个答案:

答案 0 :(得分:3)

选项2通过以下修改看起来更好:

public function addNote($user, $name, $note)
{
     return $user->notes()->create([
         'name'    => $name,
         'note'   => $note,
     ]);
}

这是因为您不必手动设置FK,它更优雅,更易读。这样你就可以充分利用Laravel。

<强>优点

  • 将自动设置关系。
  • 外键列的名称并不重要(只需要在关系声明中定义)。