0
respostas

Dúvida - Erro Ao Usar Herança Com Laravel/Eloquent

Pessoal, boa noite.

Estou com uma dúvida usando Laravel/Eloquent, gostaria de pedir ajuda.

Eu tenho a classe Funcionario que extende de Pessoa e estou tentando ler e gravar os dados de um banco sqlite.

O problema é que ao tentar instanciar o objeto, o construtor de funcionário reclama que está vazio. Dei um vardump na variável $request e os dados estão lá, mas quando tento instanciar um funcionário com Funcionario::create($request->all()) dá erro.

Se eu faço sem usar herança funciona tranquilo, mas se aplico a herança dá erro (abaixo as classes e print do erro).

Poderiam me dar uma força por favor ?

Classe Pessoa


namespace App;

use Illuminate\Database\Eloquent\Model;

class Pessoa extends Model
{
    private $nome;

    private $cpf;

    private $sexo;

    public function __construct(string $nome, string $cpf, string $sexo){    
        $this->nome = $this->validaNome($nome);
        $this->cpf = $cpf;
        $this->sexo = $this->validaSexo($sexo);

    }   

Classe Funcionario:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;


Class Funcionario extends Pessoa
{

    protected $table = 'funcionarios';
    public $timestamps = false;

    protected $fillable = ['nome','cpf','sexo','cargo','salario','site','matricula'];

    private $cargo;

    private $salario;

    private $site;

    private $matricula;

            public function __construct(string $nome, string $cpf,string  $sexo,string $cargo, int $salario, string $site, int $matricula){

            parent::__construct($nome, $cpf, $sexo);

            $this->cargo = $cargo;
            $this->salario = $salario;
            $this->site = $site;
            $this->matricula = $matricula;
}

Funcionarios Controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Funcionario;
use App\Http\Requests\FuncionariosFormRequest;

class FuncionariosController extends Controller {

public function index(Request $request){


    //Consulta todos os funcionarios e ordena por nome.
    $funcionarios = Funcionario::query()
     ->orderBy('nome')
     ->get();

    $mensagem = $request
     ->session()
     ->get('mensagem');

    $request
     ->session()
     ->remove ('mensagem');

       return view ('funcionarios.index', [
             'funcionarios'=> $funcionarios,
             'mensagem' => $mensagem
         ]);

     }

    public function create(){
             return view('funcionarios.create');
     }

    public function store (FuncionariosFormRequest $request){

        $funcionario = Funcionario::create($request->all());

        echo "Funcionario com ID {$funcionario->id} criado: {$funcionario->nome}";
        $request->session()
        ->flash('mensagem', 
            "Funcionario {$funcionario->id} criado com sucesso {$funcionario->nome}");


            return redirect()->route('listar_funcionarios');
    }

    public function destroy (Request $request){

        Funcionario::destroy($request->id);
        $request
            ->session()
            ->flash(
                    'mensagem',
                    "Funcionario Removido Com Sucesso"   
            );
        return redirect()->route('listar_funcionarios');
    }

}

Este é o erro que me apresenta:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade