Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

ORM

Olá professor,

Consegui criar um projeto laravel no PHPStorm e criar a conexão com o SQL Server. Foi bem tranquilo. Criei as migrations, defini os blueprints. Como você diz: Simples assim! =)

veja um exemplo do que fiz:

 public function up()
    {
        Schema::create('ccs', function(Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('nome',20)->unique('UK_nome_ccs');
            $table->string('descricao',50)->nullable();
            $table->string('status',7)->default('ATIVO');
            $table->timestamps();
            $table->unsignedBigInteger('dre_id');
            $table->foreign('dre_id')->references('id')->on('dres');
        });
    }

Me corrija se eu estiver enganado, mas achei a curva de aprendizado mais rápido com Eloquent do que com o Doctrine. Até porque já vem integrado no Laravel! =)

Mas... Não sei porque eu já vi exemplos até em outras linguagens e achei o Doctrine mas parecido com ORMs de outras linguagens: Criamos um Model com atributos privados, criamos os Getters e Setters e colocamos as anotações nos atributos. Você executa um comando e o ORM verifica as classes e cria as tabelas no banco. O que a princípio poderia ser uma vantagem, até se quisesse, por exemplo, migrar uma aplicação de uma linguagem para o PHP. Pelo menos a parte das classes do model seriam bem utilizadas.

Já o eloquent parece ser mais produtivo e fácil de implementar...

Qual a sua opinião de mercado (vagas, mais utilizado) e de praticidade ou vantagens e desvantagens ao utilizar uma ou outra ORM?

Empresa, você acaba tendo que seguir o que a empresa utiliza. Em projetos pessoais, qual você utilizaria mais vezes?

Ambos ORM são robustos e aguentam um ambiente de produção frenético (concorrência, locks, etc) ?

É possível utiilizar o Doctrine com o Laravel? É algo previsto e amigável ou seria considerado gambiarra? =)

Veja bem: gostei muito do Eloquent, apenas curiosidade e saber a opinião de quem tem (muito) mais experiência...

Abs e muito obrigado por esse treinamento show! meus códigos mudarão da água para vinho! Principalmente os testes, que nunca utilizei...

1 resposta

Fala, Ivan! Show de bola você ir mais a fundo nos estudos. Parabéns!

Então, cara, eu sou meio enviesado pra falar do assunto. ActiveRecord (o modelo seguido pelo Eloquent) fere o S de SOLID, então eu já descarto seu uso aí.

Por mais que o Eloquent seja mais produtivo inicialmente, eu não gosto do modelo em aplicações grandes, com muitas regras de negócio. Fica bem mais difícil ter um domínio rico (diferente de modelo anêmico) sem depender do framework (conceitos de DDD, etc.).

Em projetos pessoais, eu sempre que posso uso Doctrine ou ORM nenhum (só PDO na mão mesmo).

Na empresa que eu trabalho, dou manutenção em muitos projetos legados, então não usamos ORM.

Já trabalhei com Doctrine em empresas anteriores e é muito melhor pra dar manutenção do que os projetos que trabalhei com Laravel (e Eloquent).

É possível usar Doctrine com Laravel sim. Até cito isso no Curso de Doctrine (https://www.laraveldoctrine.org/).

Espero não ter respondido todas as dúvidas.

Ah, muito obrigado pelo feedback! Fico muito feliz de ter contribuído de alguma forma.

Forte abraço e bons estudos!