简体   繁体   English

PHP Laravel App使用数据透视表具有多对多关系

[英]PHP Laravel App with many to many relations using Pivot Tables

I am building a Bookmarking app with PHP's Laravel framework and would like to generate some Pivot Tables in Laravels ORM. 我正在使用PHP的Laravel框架构建一个书签应用程序,并希望在Laravels ORM中生成一些数据透视表。

My Database has these tables which need relations with each other: 我的数据库具有这些需要相互联系的表:

  • Users 用户数
  • Bookmarks 书签
  • Bookmark_tag_lists 书签列表
  • Bookmark_tags 书签标签

Can someone help define what methods I would need to add to each of these Models and tables to create for the Pivot table creations and functionality described below? 有人可以帮助定义我需要为这些Pivot表创建和功能创建的模型和表中添加哪些方法吗?


SQL Queries I will need to be able to get records with these calls: SQL查询我将需要能够通过以下调用获取记录:

Related to User 与用户相关

  • get all bookmark_tag_lists that belong to a user ID 获取属于用户标识的所有bookmark_tag_lists
  • get all bookmark_tags that belong to a user id 获取属于用户标识的所有bookmark_tags
  • get all bookmarks that belong to a user id 获取属于用户标识的所有书签

Related to bookmark_tag_lists 相关书签_tag_lists

  • get all bookmark_tags that belong to a bookmark_tag_lists id 获取属于一个bookmark_tag_lists ID的所有bookmark_tags

Related to bookmark_tags 相关的书签_标签

  • get all bookmarks that belong to a bookmark_tag id 获取属于一个bookmark_tag id的所有书签

users 使用者

  • has many bookmarks 有很多书签
  • has many bookmark_tags 有很多bookmark_tags
  • has many bookmark_tag_lists 有很多bookmark_tag_lists

bookmarks 书签

  • belong to a user 属于用户
  • belong to many bookmark_tags 属于许多bookmark_tags

bookmark_tags bookmark_tags

  • has many bookmarks 有很多书签
  • related to an id column on a users table users table上的id列相关
  • related to an id column on a bookmarks table bookmarks table上的id列相关
  • related to an id column on a bookmark_tag_lists table bookmark_tag_lists table上的id列相关

bookmark_tag_lists bookmark_tag_lists

  • has many bookmark_tags 有很多bookmark_tags

* *

User model: 用户模型:

public function bookmarks() {
    return $this->hasMany(Bookmark::class);
}

public function bookmarkTags() {
    return $this->hasMany(BookmarkTag::class);
}

public function bookmarkTagLists() {
    $bookmarkTags = $this->bookmarkTags;
    $bookmarkTagLists = array();
    foreach ($bookmarkTags as $bookmarkTag) {
        $bookmarkTagLists[] = $bookmarkTag->bookmarkTagList;
    }
    return array_unique($bookmarkTagLists);
}

Bookmark model: 书签模型:

public function user() {
    return belongsTo(User::class);
}

public function bookmarkTags() {
    return bolongsToMany(BookmarkTag::class);
}

public function tags() {
    return hasMany(BookmarkTag::class);
} 

BookmarkTag model: 书签标记模型:

public function bookmarks() {
    return belongsToMany(Bookmark::class);
}

public function user() {
    return belongsTo(User::class);
}

public function bookmarkTagList() {
    return $this->belongsTo(BookmarkTagList::class);
}

BookmarkTagList model: BookmarkTagList模型:

public function bookmarkTags() {
    return hasMany(BookmarkTag::class);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM