【问题标题】:How to create a new many to many record with attach如何使用附加创建新的多对多记录
【发布时间】:2016-10-12 14:43:57
【问题描述】:

好吧,我看过一些关于这个的帖子,但我根本不明白附加的概念,我有三个表:

列表(列表):

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

【问题讨论】:

    标签: laravel-5 eloquent many-to-many attachment record


    【解决方案1】:

    无需实现从数据透视表中添加/删除记录的方法。 Eloquent 有 attach/detach 方法可以为您做到这一点,但首先您需要为 Eloquent 提供数据透视表的列名,因为您没有使用 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);
    

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      相关资源
      最近更新 更多