Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

326
Visualizações
What causes this query builder error in my Laravel 8 app?

I am working on a Laravel 8 app with users, roles and permissions.

I try to get the current user's list of permissions.

In app\Models\Permission.php I have:

class Permission extends Model {
  use HasFactory;

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

In app\Models\Role.php I have:

class Role extends Model {
  use HasFactory;

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

In the controller, I first get the user's role id:

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

Then, the list of permissions:

$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();

The above is intended to be the equivalent of this MySQL query, that works:

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

The problem

The Laravel query builder you can see above fails with this message:

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)

I can't understand why, since I have tested the MySQL query in phpMyAdmin and it works.

Where is my mistake?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

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

should be ->leftJoin("roles", "roles.permission_id", "=", "permissions.id")

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda