Laravel 5 如何使用attach创建新的多对多记录
好的,我看过一些关于这方面的帖子,但我一点也不理解附加的概念,我有三张表: Llistes(列表): 坎康斯(歌曲): 数据透视表:列表歌曲(列出歌曲):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('
$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);