[英]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: 我的数据库具有这些需要相互联系的表:
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 与用户相关
Related to bookmark_tag_lists 相关书签_tag_lists
Related to bookmark_tags 相关的书签_标签
users 使用者
bookmarks 书签
bookmark_tags bookmark_tags
id
column on a users table
与users table
上的id
列相关 id
column on a bookmarks table
与bookmarks table
上的id
列相关 id
column on a bookmark_tag_lists table
与bookmark_tag_lists table
上的id
列相关 bookmark_tag_lists bookmark_tag_lists
* *
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.