mercredi 31 octobre 2018

Consulta com relacionamento circular no Laravel 5.6

Olá! Tenho as seguintes tabelas:

  1. Usuários;
  2. Empresas;
  3. Funcionários.

Estou tentando trazer todos os funcionários de uma empresa. No SQL é bem fácil:

SELECT c.name, eu.name FROM users u
    JOIN companies c ON c.user_id = u.id
    JOIN employees e ON e.company_id = c.id
    JOIN users eu ON eu.id = e.user_id
 WHERE u.id = 2

Porém no Laravel já tentei de tudo e não consigo obter essa listagem (nome da empresa + nome do funcionário) corretamente.

Seguem as tentativas frustadas:

  1. Nessa eu tentei obter todas as empresas do usuário logado para em seguida listar todos os funcionários.

    $companies = Auth::user()->with('companies')->with('employee')->where('id', '=', Auth::user()->id)->get();
    
    
  2. Nessa eu parti do modelo Funcionário.

    $employees = Employee::with('company')->with('user')->where('user_id', Auth::user()->id)->paginate(30);
    
    

Como a plataforma é multi usuário, é interessante lembrar que:

  1. Um Usuário possui N Empresas;
  2. Uma Empresa possui N Funcionários;
  3. E um Funcionário pertence a UM Usuário.

Dai que vem a estrutura circular das tabelas.

enter image description here



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire