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中的新手,这对我来说有点困难。
答案 0 :(得分:2)
没有必要实现从数据透视表中添加/删除记录的方法。 Eloquent有attach
/ detach
方法可以为您做到这一点,但首先您需要向Eloquent提供数据透视表的列名,因为您没有使用Eloquent的列名约定。 / p>
在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);