Ale*_*eix 1 many-to-many record attachment eloquent laravel-5
好吧,我看到了一些关于此的帖子,但我根本不理解附加的概念,我有三个表:
Llistes(列表):
$table->increments('id');
$table->string('nom_llista');
$table->integer('user_id')->unsigned();
});
Run Code Online (Sandbox Code Playgroud)
康康斯(歌曲):
$table->increments('id');
$table->string('titol');
$table->integer('genere_id')->unsigned();
$table->integer('artista_id')->unsigned();
$table->integer('album_id')->unsigned();
Run Code Online (Sandbox Code Playgroud)
数据透视表:llistes_cancons ( lists_songs):
$table->increments('id');
$table->integer('id_canco')->unsigned();
$table->integer('id_llista')->unsigned();
$table->timestamps();
Run Code Online (Sandbox Code Playgroud)
我还有另外两个课程,我认为这是正确的,但我不确定:
在 Canco.php ( Song.php ) 中:
public function llistescancons_llistes()
{
return $this->belongsToMany('App\Llista');
}
Run Code Online (Sandbox Code Playgroud)
在 Llista.php ( List.php ) 中:
public function llistescancons_cancons()
{
return $this->belongsToMany('App\Canco');
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是我如何在我的控制器中实现一个功能,让我可以将新记录添加到数据透视表(多对多),并且如果可能有另一个功能来显示记录,我是 Laravel 的新手,这有点对我来说很难。
无需实现从数据透视表中添加/删除记录的方法。雄辩有attach/detach方法可以为您做到这一点,但首先您需要为 Eloquent 提供数据透视表的列名称,因为您没有使用 Eloquent 的列名称约定。
在 Canco.php (Song.php) 中:
public function llistescancons_llistes()
{
return $this->belongsToMany('App\Llista','llistes_cancons','id_canco','id_llista');
}
Run Code Online (Sandbox Code Playgroud)
在 Llista.php (List.php) 中:
public function llistescancons_cancons()
{
return $this->belongsToMany('App\Canco','llistes_cancons','id_llista','id_canco');
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您想将一首歌曲附加到列表中,您可以轻松地使用该歌曲id来做到这一点
$list = App\Llista::find(1);
$list->llistescancons_cancons()->attach($songId);
Run Code Online (Sandbox Code Playgroud)
或者反过来
$song = App\Canco::find(1);
$song->llistescancons_llistes()->attach($listId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3090 次 |
| 最近记录: |