我正在开发一个有用户、角色和权限的Laravel 8应用程序.

我try 获取当前用户的list of permissions.

app\Models\Permission.php年中,我有:

class Permission extends Model {
  use HasFactory;

  protected $fillable = [
    'name', 'list'
  ];
}

app\Models\Role.php年中,我有:

class Role extends Model {
  use HasFactory;

  protected $fillable = [
    'name', 'permission_id'
  ];
}

在控制器中,我首先得到用户的role id:

$user_role = User::where('email', $user->getMail())->first()->role_id;

然后是权限列表:

$user_permissions = Permission::select (
  "roles.name as role_name",
  "permissions.list as permissions_list",
)
->leftJoin("permissions", "roles.permission_id", "=", "permissions.id")
->where('roles.id', $user_role)
->get();

上述内容旨在等效于此MySQL查询,其效果如下:

SELECT roles.name as role_name, permissions.list AS permissions_list
FROM roles LEFT
JOIN permissions ON roles.permission_id = permissions.id WHERE roles.id = 1

问题

您可以看到上面的Laravel查询生成器失败,并显示以下消息:

Syntax error or access violation: 1066 Not unique table/alias: 'permissions' (SQL: select `roles`.`name`, `permissions`.`list` from `permissions` left join `permissions` on `roles`.`permission_id` = `permissions`.`id` where `roles`.`id` = 1)

我不明白为什么,因为我已经在phpMyAdmin和it个works中测试了MySQL查询.

Where is my mistake?

推荐答案

->leftJoin("permissions", "roles.permission_id", "=",

应该是

Php相关问答推荐

在特定日期之间使用特定的元密钥销售产品

WooCommerce基于元数据的自定义范围目录排序

ForHumans函数中的月当量与单位限制

让所有具有相同名称的产品在WooCommerce中更改价格

允许在WooCommerce管理员优惠券列表中显示自定义优惠券类型

如何在Foreach语句中使用php和li按降序排序?

根据产品类型显示或隐藏WooCommerce管理产品自定义字段

如何使用php一次更新两个数据库中的MySQL表

从AJAX响应中获取一个未定义的html

基于自定义域的每个购物车项目的WooCommerce定制数量输入步骤

如何将LARAVEL模块路径和项目路径合并,因为当我使用模块路径时,它们会覆盖项目路径

无法在Laravel中将日志(log)通道设置为空

WooCommerce产品页面上没有产品详细信息

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

使用 php Carbon 获取两个日期之间的随机日期和时间

PHP向API发送curl请求

WooCommerce – 在新订单邮箱通知中显示产品分类计数

Shopware 6:无法在新的自定义插件中保存关联字段(媒体)

在 GA4 Data API V1 Beta 中使用 inListFilter 过滤器时出错

PHP获取根据辞职日期自动续订的合同终止日期