6
respostas

Herança

Boa noite, como eu faço no Laravel para aplicar herança entre meus Modelos e com eles fazer a consulta no banco de dados? Coloquei o extends na classe filha puxando de pai e o campo $fillable apenas com os dados que estão na filha mas não funcionou assim.

6 respostas

Oi Ricardo, tudo bem? Não entendi bem essa última parte, poderia descrever o que está tentando fazer, mostrar o cenário pra ver se a gente chega em uma solução?

Por exemplo, se fosse em php puro eu faria:

Pessoa.php

<?php
    class Pessoa{
    //Atributos
    //Construtor
    //Métodos
    }
>?

Usuario.php

<?php
    class Usuario extends Pessoa{
    //Atributos
    //Construtor
    //Métodos
    }
>?

No Laravel eu pensei que a classe pai fosse fazer o extends de Model enquanto a filha dessa classe pai, mas ao chamar o método find($id) da classe fillha ela não está acessando os dados definidos na classe pai que eu coloquei no campo fillable, eu devo sobrescrever o construtor?

grato.

Olha, no php puro, você também precisaria fazer o parent::construct(). A não ser que não fosse necessário, mas no caso do Laravel, sim, acho que você precisa fazer isso. Até por que, não é uma simples herança, mas sim, uma cadeia.

Pessoa herda de Model, Usuario herda de Pessoa, onde você quer ter as mesmas utilidades de Model. Outra observação seria, o $fiilable está privado ou protegido?

O fillable está como protected com os dados referentes unicamente a cada classe minha

Já tentou usar o parent::_construct() ? afim de passar os atributos para a classe PAI?

Só ressaltando algo que não parece ter ficado claro... Caso você não tenha um construtor definido em um subclasse, o construtor da superclasse é chamado, sem necessidade de parent::__construct. Só é necessário caso o construtor da classe filha seja escrito.