2016-06-11 29 views
0

奧基,我看到一些有關此職位,但我不明白附上所有的概念,我有三個表:如何創建一個新的多對多的紀錄附加

Llistes(列表) :

 $table->increments('id'); 
     $table->string('nom_llista'); 
     $table->integer('user_id')->unsigned(); 
    }); 

Cancons(歌曲):

 $table->increments('id'); 
     $table->string('titol'); 
     $table->integer('genere_id')->unsigned(); 
     $table->integer('artista_id')->unsigned(); 
     $table->integer('album_id')->unsigned(); 

透視表:llistes_cancons(個lists_songs)

 $table->increments('id'); 
     $table->integer('id_canco')->unsigned(); 
     $table->integer('id_llista')->unsigned(); 
     $table->timestamps(); 

我有,我認爲這是正確的其他兩個類,但我不是肯定的是:

在Canco.php(Song.php):

public function llistescancons_llistes() 
{ 
    return $this->belongsToMany('App\Llista'); 
} 

在Llista.php(list.php的):

public function llistescancons_cancons() 
{ 
    return $this->belongsToMany('App\Canco'); 
} 

所以,問題是如何在我的控制器中實現一個函數,讓我向數據透視表(多對多)添加新記錄,並且如果可能還有其他功能顯示記錄,我是Laravel的新手對我來說有點困難。

回答

1

不需要實現方法來添加/刪除數據透視表中的記錄。雄辯有attach/detach方法可以爲你做,但首先你需要提供樞軸表的列名稱,因爲你沒有使用Eloquent的列名稱約定。

在Canco.php(Song.php):

public function llistescancons_llistes() 
{ 
    return $this->belongsToMany('App\Llista','llistes_cancons','id_canco','id_llista'); 
} 

在Llista.php(list.php的):

public function llistescancons_cancons() 
{ 
    return $this->belongsToMany('App\Canco','llistes_cancons','id_llista','id_canco'); 
} 

然後,如果你要附加一個歌曲列表,您可以方便地使用這首歌id

$list = App\Llista::find(1); 
$list->llistescancons_cancons()->attach($songId); 

或周圍

其他方式
$song = App\Canco::find(1); 
$song->llistescancons_llistes()->attach($listId); 
+0

謝謝!!!!!它的工作原理,最後我明白它是如何工作的! – Aleix

相關問題