Laravel 5 如何使用attach创建新的多对多记录

Laravel 5 如何使用attach创建新的多对多记录,laravel-5,eloquent,many-to-many,attachment,record,Laravel 5,Eloquent,Many To Many,Attachment,Record,好的,我看过一些关于这方面的帖子,但我一点也不理解附加的概念,我有三张表: Llistes(列表): 坎康斯(歌曲): 数据透视表:列表歌曲(列出歌曲): $table->increments('id'); $table->string('nom_llista'); $table->integer('user_id')->unsigned(); }); $table->increments('

好的,我看过一些关于这方面的帖子,但我一点也不理解附加的概念,我有三张表:

Llistes(列表):

坎康斯(歌曲):

数据透视表:列表歌曲(列出歌曲)

        $table->increments('id');
        $table->string('nom_llista');
        $table->integer('user_id')->unsigned();
    });
        $table->increments('id');
        $table->string('titol');
        $table->integer('genere_id')->unsigned();
        $table->integer('artista_id')->unsigned();
        $table->integer('album_id')->unsigned();
        $table->increments('id');
        $table->integer('id_canco')->unsigned();
        $table->integer('id_llista')->unsigned();
        $table->timestamps();
public function llistescancons_llistes()
{
    return $this->belongsToMany('App\Llista');
}
public function llistescancons_cancons()
{
    return $this->belongsToMany('App\Canco');
}
我还有两门课我认为是正确的,但我不确定:

在Canco.php(Song.php)中:

在Llista.php(List.php)中:


所以,问题是我如何在我的控制器中实现一个函数,让我将新记录添加到数据透视表(多对多)中,如果可以使用另一个函数来显示记录,我是Laravel的新手,这对我来说有点难。

不需要实现从数据透视表中添加/删除记录的方法。Eloquent有
attach
/
detach
方法可以为您执行此操作,但首先需要为Eloquent提供透视表的列名,因为您没有使用Eloquent的列名约定

在Canco.php(Song.php)中:

在Llista.php(List.php)中:

然后,如果您想将歌曲附加到列表中,您可以轻松地使用歌曲
id

$list = App\Llista::find(1);
$list->llistescancons_cancons()->attach($songId);
或者反过来

$song = App\Canco::find(1);
$song->llistescancons_llistes()->attach($listId);

不需要实现从数据透视表中添加/删除记录的方法。Eloquent有
attach
/
detach
方法可以为您执行此操作,但首先需要为Eloquent提供透视表的列名,因为您没有使用Eloquent的列名约定

在Canco.php(Song.php)中:

在Llista.php(List.php)中:

然后,如果您想将歌曲附加到列表中,您可以轻松地使用歌曲
id

$list = App\Llista::find(1);
$list->llistescancons_cancons()->attach($songId);
或者反过来

$song = App\Canco::find(1);
$song->llistescancons_llistes()->attach($listId);