1
resposta

Classes de Domínio x Model no Laravel

Boa tarde. Um exemplo, uma entidade Pessoa que têm duas entidades filhas, Civil e Juridica. Como representá-las no Model pelo Laravel? O exemplo abaixo faz sentido?

abstract class PessoaModel extends Model
{ ... }
class CivilModel extends PessoaModel
{
    protected $table = 'civis';
}
class JuridicaModel extends PessoaModel
{
    protected $table = 'juridicas';
}

Como poderia a partir dessas Model gerar as classes de domínio? Existe algum Factory no Laravel para essa tratativa?

1 resposta

Olá Daniel tudo bem? Espero que sim!

Peço desculpa pela demora para responder o seu tópico.

Existem algumas maneiras de se fazer isso no Laravel, uma delas é que você pode representar as entidades "Pessoa", "Civil" e "Juridica" usando o conceito de herança e a funcionalidade de modelos Eloquent.

A classe "Pessoa" pode ser a classe pai, enquanto as classes "Civil" e "Juridica" podem ser as classes filhas. Para configurar essa estrutura de herança, você pode usar o recurso de herança de modelos do Laravel. Aqui está um exemplo de como você pode fazer isso:

use Illuminate\Database\Eloquent\Model;

class Pessoa extends Model
{
    // Configurações da classe Pessoa

    public function civil()
    {
        return $this->hasOne(Civil::class);
    }

    public function juridica()
    {
        return $this->hasOne(Juridica::class);
    }
}

class Civil extends Pessoa
{
    // Configurações da classe Civil
}

class Juridica extends Pessoa
{
    // Configurações da classe Juridica
}

No primeiro método do exemplo, a classe "Pessoa" herda do modelo "Eloquent Illuminate\Database\Eloquent\Model". Em seguida, as classes "Civil" e "Juridica" estendem a classe "Pessoa".

Dentro da classe "Pessoa", você pode definir os relacionamentos com as classes filhas usando os métodos hasOne(). No exemplo acima, defini os métodos civil() e juridica(), que estabelecem um relacionamento de "um para um" entre a classe "Pessoa" e as classes "Civil" e "Juridica", respectivamente.

Essa estrutura permitirá que você acesse os dados das entidades filhas através dos relacionamentos definidos. Por exemplo, se você tiver um objeto da classe "Pessoa", poderá acessar os dados relacionados à entidade "Civil" chamando $pessoa->civil ou os dados relacionados à entidade "Juridica" chamando $pessoa->juridica.

Espero que isso esclareça sua dúvida! Se você tiver mais perguntas, estarei à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.