gpt4 book ai didi

mysql - Laravel 插入三向数据透视表

转载 作者:可可西里 更新时间:2023-11-01 06:49:55 24 4
gpt4 key购买 nike

总结

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

架构

我看到了这个架构 here at LaravelSD

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

Schema

Artists->Albums->Tracks 关系很简单,如您所料。

标签、轨道和用户都相互关联,因为没有第三者就没有两者

关系

艺术家 hasMany() 专辑

专辑 hasMany() 轨道belongsTo() 艺术家

轨道 belongsTo() 专辑

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

标签 belongsToMany() 轨道belongsToMany() 用户

用户 belongsToMany() 标签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');
}

TagTrack 模型包含相同的各自关系。

问题

所以我的问题是:

如何将数据插入到 Tag_Track_User 表中? tag_track_user 表是一个 3 向数据透视表,包含有关用户标记的轨道的信息。

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

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

谢谢

非常感谢我在这方面得到的任何帮助。

最佳答案

嗯:

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

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

类似的东西? firstOrCreate 的功能如其名,其余的非常简单明了。

关于mysql - Laravel 插入三向数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23593160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com