如何使用附加创建新的多对多记录
How to create a new many to many record with attach
好吧,我看过一些关于这个的帖子,但我根本不明白附加的概念,我有三个 tables:
Llistes(Lists):
$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();
枢轴 table: 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');
}
所以,问题是我如何在我的控制器中实现一个功能,让我将新记录添加到数据透视表 table(多对多),如果有可能显示记录的另一个功能,我我是 Laravel 的新手,这对我来说有点难。
无需对来自数据透视表 table 的 add/remove 条记录实施方法。 Eloquent 有 attach
/detach
方法可以为你做到这一点,但首先你需要给 Eloquent 数据透视表 table 的列名,因为你是不使用 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);
好吧,我看过一些关于这个的帖子,但我根本不明白附加的概念,我有三个 tables:
Llistes(Lists):
$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();
枢轴 table: 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');
}
所以,问题是我如何在我的控制器中实现一个功能,让我将新记录添加到数据透视表 table(多对多),如果有可能显示记录的另一个功能,我我是 Laravel 的新手,这对我来说有点难。
无需对来自数据透视表 table 的 add/remove 条记录实施方法。 Eloquent 有 attach
/detach
方法可以为你做到这一点,但首先你需要给 Eloquent 数据透视表 table 的列名,因为你是不使用 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);