多對多關係連結時
很多情況會用到多對多的表格,例如:一篇文章可以有多個標籤,一個標籤可以對應多篇文章。
為了符合資料庫正規化,在設計表格時,除了文章、標籤各一個表格,需要第3張表格連結這兩個表格。
articles
article_name
例如上面例子,文章1有music、art、food,3個標籤;而標籤food的有文章1、3,2篇文章。
Laravel提供多種方式去建立和控制這樣多對多的關係,包括最開始的save()也能用。
建立:attach()、sync()、save()
刪去:detach()
切換:toggle()
用上面文章例子,如果要把文章3新增標籤tech和music的話,有幾種寫法:
Article::find(3)->tags()->attach([1,2]);
//結果會有三的標籤:1,2,4
Article::find(3)->tags()->sync([1,2],false);
//結果也會有三個標籤:1,2,4
//沒有false的話,結果會剩兩個標籤:1,2
Article::find(3)->tags()->saveMany([
Tag::find(1),
Tag::find(2)
//save輸入的類型須為model
//多個時要用saveMany
有三個選項比較
單個model
多個model
Laravel 模型关联attach,save,sync方法参数类型验证_Coder_Chang的博客-CSDN博客
Laravel 模型关联attach,save,sync方法参数类型验证_Coder_Chang的博客-CSDN博客
Laravel 5 - Many to Many - Attach versus Save
Eloquent: Relationships