php - 在 laravel 中有 4 个表的 belongsToMany
问题描述
我有 4 个表,它们的关系如图所示。我在用户模型中还有 2 个功能:
public function getUserSchools(){
return $this->belongsToMany(Schools::class, 'user_has_schools', 'user_id', 'school_id');
}
public function getUserRoles(){
return $this->belongsToMany(Roles::class, 'user_has_schools', 'user_id', 'role_id');
}
他们工作正常,但我想合并他们的结果 - 我需要让这个用户的学校与他在每所学校的角色(例如:[小学,老师],[高中,老板]等)。我怎样才能达到这个结果?也许这是一个微不足道的问题,但我刚刚开始使用 Laravel 进行冒险。:)
解决方案
查看 Laravel 多态关系 https://laravel.com/docs/5.8/eloquent-relationships#many-to-many-polymorphic-relations
样本 :
class Post extends Model
{
/**
* Get all of the tags for the post.
*/
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}
}
不要介意示例方法
class Tag extends Model
{
public function posts()
{
return $this->morphedByMany('App\Post', 'taggable');
}
public function videos()
{
return $this->morphedByMany('App\Video', 'taggable');
}
public function links()
{
return $this->morphedByMany('App\Links', 'taggable');
}
public function forum()
{
return $this->morphedByMany('App\Forums', 'taggable');
}
}
推荐阅读
- javascript - 在 mui 的文本字段上对齐文本中心
- javascript - 为什么我的 Javascript 没有检测到我需要的元素?
- go - 如何使用一个字节缓冲区作为地图的关键存储?
- excel - 从打开的工作簿中选择以粘贴复制的数据
- angularjs - TypeError:无法读取未定义的属性“包含”
- linux - 修改以前在linux上执行的命令
- java - 无法将 JSON 响应反序列化为 Java 对象
- sql-server - 带有 Order By 的子查询中 TOP 的奇怪行为
- reactjs - 在打印窗口中反应组件大小的变化
- google-apps-script - 分析 API v3 | 仅在少数帐户上出现错误 401(无效凭据)