Eloquent ORM para PHP: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Eloquent ORM e para que serve?

\n\n

Eloquent ORM (Object-Relational Mapping) é uma biblioteca embutida para trabalhar com bancos de dados no framework PHP Laravel. Ela fornece uma maneira elegante e intuitiva de interagir com bancos de dados relacionais (MySQL, PostgreSQL, SQLite, SQL Server) usando o padrão Active Record.

\n\n

Para que serve o Eloquent?

\n
    \n
  • Abstração de SQL: Em vez de escrever consultas SQL brutas, você trabalha com objetos PHP. Isso torna o código mais limpo, legível e seguro.
  • \n
  • Active Record: Cada modelo Eloquent representa uma tabela no banco de dados. Uma instância do modelo é uma linha nessa tabela. Você pode ler, modificar e salvar dados apenas trabalhando com as propriedades do objeto.
  • \n
  • Proteção contra injeção de SQL: O Eloquent usa PDO (PHP Data Objects) com consultas preparadas, que escapam automaticamente a entrada do usuário.
  • \n
  • Relacionamentos: Defina e use facilmente relações entre tabelas (um para um, um para muitos, muitos para muitos, etc.).
  • \n
  • Coleções: Os resultados das consultas são retornados como coleções — objetos poderosos que fornecem muitos métodos úteis para processamento de dados (map, filter, reduce, pluck, etc.).
  • \n
  • Mutators e Accessors: Permitem transformar dados ao salvar (mutators) ou ao ler (accessors) do banco de dados.
  • \n
\n\n

Eloquent não é apenas uma biblioteca, é uma parte fundamental do ecossistema Laravel. Compreender o Eloquent é necessário para o desenvolvimento eficaz neste framework.

\n\n

Instalação

\n\n

O Eloquent ORM é instalado automaticamente junto com o framework Laravel. Se você estiver criando um novo projeto Laravel, o Eloquent já está pronto para uso.

\n\n

Instalação via Composer (se você estiver usando Laravel):

\n
composer create-project laravel/laravel example-app\ncd example-app
\n\n

Instalação do Eloquent sem Laravel (Standalone):

\n

Você pode usar o Eloquent fora do Laravel, por exemplo, em seu próprio projeto. Para isso, você precisará instalar o pacote illuminate/database e configurar a conexão com o banco de dados.

\n
composer require illuminate/database\ncomposer require illuminate/events // Para trabalhar com eventos de modelos (opcional)
\n\n

Exemplo de configuração de conexão (standalone):

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Illuminate\\Database\\Capsule\\Manager as Capsule;\n\n$capsule = new Capsule;\n\n$capsule->addConnection([\n    'driver'    => 'mysql',\n    'host'      => 'localhost',\n    'database'  => 'your_database',\n    'username'  => 'your_username',\n    'password'  => 'your_password',\n    'charset'   => 'utf8',\n    'collation' => 'utf8_unicode_ci',\n    'prefix'    => '',\n]);\n\n// Configurar a instância global do Eloquent\n$capsule->setAsGlobal();\n\n// Iniciar o Eloquent\n$capsule->bootEloquent();\n
\n\n

Início rápido com exemplo de código

\n\n

Suponha que temos uma tabela users no banco de dados. Vamos criar um modelo Eloquent para trabalhar com ela.

\n\n

Passo 1: Criando o modelo

\n

No Laravel, os modelos geralmente são armazenados em app/Models. Vamos criar o arquivo User.php:

\n
<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass User extends Model\n{\n    // O Eloquent automaticamente associará este modelo à tabela 'users'\n    // O nome da tabela é determinado pelo nome da classe no plural (snake_case)\n    // Se a tabela tiver outro nome, especifique a propriedade $table\n    // protected $table = 'my_users';\n\n    // Especifique quais campos podem ser preenchidos em massa (para proteção contra mass-assignment)\n    protected $fillable = ['name', 'email', 'password'];\n}\                    

Recommendations