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: