我在任何地方都找不到有关如何使用 Eloquent ORM 模型拥有多个中间表的信息。我面临的问题是我有一个用于我的用户、权限和角色的表。这些是4个表:
权限:
id
name
权限角色:
id
name
Permission_role_mappings:
id
permission_id
permission_role_id
Permission_role_user_mappings:
id
permission_role_id
user_id
(好吧,我也有一张users
桌子,但它的布局并不重要,因为外键在permission_role_user_mapping
.)
所以问题是我希望能够在permissions
从用户模型调用时从表中获取数据。我很难完全掌握 Eloquent ORM 的工作流程,所以如果我遗漏了一些至关重要的基本内容,请指出。
根据文档,我似乎不需要为中间表创建模型。那么如何从 User 类中指定关系呢?我可以做类似的事情吗?
class User extends Eloquent {
public function permission_role()
{
return $this->has_many_and_belongs_to('Permission_Role', 'permission_role_user_mappings');
}
public function permission()
{
return $this->has_many_and_belongs_to('Permission_Role', 'permission_role_user_mappings')->has_many_and_belongs_to('Permission','permission_role_mappings');
}
}
这似乎不起作用,这是错误:
User::find(1)->first()->permission()->first();
...
Method [permission] is not defined on the Query class.
我还希望能够从 Permission_Role 和 Permission 开始获取数据。我希望答案能帮助我指定所需的所有模型。