2016-11-27 14 views
1

我想弄清楚什麼是創建新行的最佳實踐。創建條目(關係)的最佳實踐?

讓我們說,我們在控制器中有這樣的:

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

這是推薦的方法使用,爲什麼?

回答

3

選項2看起來有一些修改更好,因爲:

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

那是因爲你沒有手動設置FK和它的更優雅和可讀性。這樣你將會充分利用Laravel。

優點

  • 的關係將被自動設定。
  • 外鍵列的名稱無關緊要(它只需要在關係聲明中定義)。
+0

同意。我也使用這種方法。 – alariva

+0

iCode if addNote是用戶模型中的一種方法,我可以使用$ this-> notes() - > create();並從參數中刪除$用戶? – borracciaBlu

+0

@borracciaBlu是的,你可以做到這一點。 –