在我的网站中,我有用户、角色和权限。
每个用户属于多个角色(例如User.php)和称为“role_user”的数据透视表
public function roles()
{
return $this->belongsToMany(Role::class);
}
每个角色都属于许多权限(例如Role.php)和名为“permission\u Role”的透视表
public function permissions()
{
return $this->belongsToMany(Permission::class);
}
我想以某种方式访问用户权限,但我似乎无法弄清楚。基本上,我需要这样的东西在User.php
public function permissions()
{
return $this->roles()->permissions();
}
这可能吗?请帮忙。谢谢你。
如果您使用的是JSON格式的结果,那么如果您实现了有说服力的资源,这应该非常容易
定义以下三种资源:
(注意:要轻松定义如下所示的资源,请执行:
php artisan make:resource UserRes
然后根据需要修改toArray函数。)
用户资源
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserRes extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$user = parent::toArray($request);
$user["roles"] = RolesRes::collection($this->roles);
return $user;
}
}
角色Resres
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class RolesRes extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$res = parent::toArray($request);
$res["permissions"] = $this->permissions;
return $res;
}
}
许可证:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PermissionsRes extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$perm = parent::toArray($request);
return $perm;
}
}
在我的应用程序中,这里是获取单个用户时结果示例的屏幕截图。注意多个角色的嵌套,在这些角色下有多个权限。查询单个用户时JSON响应的屏幕截图
Laravel对直接关系没有天生的支持。
我为此案例创建了一个包:https://github.com/staudenmeir/eloquent-has-many-deep
你可以这样使用它:
class User extends Model {
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function permissions() {
return $this->hasManyDeep(
Permission::class, ['role_user', Role::class, 'permission_role']
);
}
}
我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:
我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$
我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入
我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca
我有以下三个表格: 帖子 帖子: 评论: 标签: Post表有许多注释,comments表有许多与之关联的标记。 如何使用“快速加载”将所有这些表组合在一起? 比如: 但是这个查询总是在标记关系中返回空响应。 我做错了什么? 期望的结果是这样的: 你可以看到帖子里面包含评论,评论里面也包含标签关系。 另外,我在我的项目中使用了“jenssegers/laravel mongodb”包,我试图在没有
我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可