2016-06-11 28 views
0

奥基,我看到一些有关此职位,但我不明白附上所有的概念,我有三个表:如何创建一个新的多对多的纪录附加

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的新手对我来说有点困难。

回答

1

不需要实现方法来添加/删除数据透视表中的记录。雄辩有attach/detach方法可以为你做,但首先你需要提供枢轴表的列名称,因为你没有使用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); 
+0

谢谢!!!!!它的工作原理,最后我明白它是如何工作的! – Aleix

相关问题