Laravel插入三向枢轴表

Mik*_*ike 6 mysql database tags pivot-table laravel

摘要

我正在建立一个音乐发现服务.我的问题是:如何将数据插入三向数据透视表 Tag_Track_User

架构

在LaravelSD看到这个架构

它由六个主要表格(以及其他一些表格)组成: 艺术家,专辑,曲目,标签,用户和Tag_Track_User

架构

艺术家 - >专辑 - >曲目关系很简单,正如您所期望的那样.

标签,曲目和用户都相互关联,因为没有第三个,没有两个可以存在.

关系

艺术家有很多 () 专辑

专辑 hasMany() TracksbelongsTo()艺术家

曲目 belongsTo() 专辑

跟踪 belongsToMany() 标签belongsToMany()用户

标签 belongsToMany() 跟踪belongsToMany()一个用户

用户 所属的ToMany() 标签belongsToMany()一个曲目

楷模

用户模型

public function tags()
{
    return $this->belongsToMany('Tag', 'tag_track_user', 'user_mdbid', 'tag_mdbid')->withPivot('track_mdbid');
}

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
 */
public function tracks()
{
    return $this->belongsToMany('Track', 'tag_track_user', 'user_mdbid', 'track_mdbid')->withPivot('tag_mdbid');
}
Run Code Online (Sandbox Code Playgroud)

标签跟踪模型包含相同的各自的关系.

所以我的问题是:

如何将数据插入Tag_Track_User表?该tag_track_user表是3路透视表cointaining关于用户所标记的曲目信息.

您必须登录才能标记曲目(这意味着我可以访问用户的ID).当我在包含表单的页面上显示轨道ID时,将访问轨道ID.另一方面标签; 如果它已经存在于tags表中,我想得到它的ID并重新使用它(因为它们是唯一的),如果没有,我想创建它,为它分配一个ID并将其插入tag_track_user_table.

  1. 我需要检查标签是否存在
  2. 如果是,请获取它的ID
  3. 将数据插入Tag_Track_User

谢谢

我收到的任何帮助,非常感谢.

Wog*_*gan 2

出色地:

$tag = Tag::firstOrCreate(array('text' => $tag_text));

TagTrackUser::create(array(
    "tag_mdbid" => $tag->mdbid,
    "track_mdbid" => $track->mdbid,
    "user_mdbid" => Auth::user()->mdbid
));
Run Code Online (Sandbox Code Playgroud)

类似的事情?firstOrCreate顾名思义,其余的就很简单了。

  • 那么只需使用“DB::table('tag_track_user')->insert(array(...));” (2认同)