我无法在任何地方找到有关如何使用Eloquent ORM模型获得多个中间表的信息。我面临的问题是我有一张用于我的用户,权限和角色的表格。这些是4个表:我应该如何构建Laravel中的多个中间表的雄辩ORM模型?
权限:
id
name
Permission_roles:
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来掌握工作流程,所以如果我缺少一些基本的东西,那么请指出一下。根据documentation似乎我不需要为中间表创建模型。那么,我将如何指定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和权限开始获取数据。我希望答案能帮助我指定所需的所有模型。
谢谢,我一回家就会阅读该指南! – Niklas
不客气。另外,请注意,Laravel有许多关系表名称的约定。请参阅此链接以了解如何命名它们:http:// laravel。com/docs/database/eloquent#多对多 – bilalq
我调整了我的模型,以便它们现在可以正确连接,但我只能从一个角色中选择所有权限('$ roles = User :: find(1 ) - > permission_roles() - > first() - > permissions;')如何选择所有连接角色的所有权限? – Niklas