Observação: Este tutorial refere-se ao Laravel-4-BETA, estando totalmente DESATUALIZADO para a versão atual. Muita coisa mudou no framework…
Depois que criamos nossas migrações, e com isso criamos a nossa primeira tabela no banco de dados, iremos, num futuro bem próximo, desejar ter acesso a essa tabela.
Laravel possui uma forma bem básica de realizar acessos nas tabelas.
Mas essa facilidade é quase o mesmo que usar o PDO.
O que queremos mesmo no nosso código é uma facilidade real.
Um mamão com açucar!
Queremos um ORM bem sine qua non!!!!
(Baixou a Marília Gabriela em mim…)
O ORM do Laravel chama-se Eloquent.
A título de curiosidade: a facilidade de acesso a bancos de dados, que falei no começo desse post, chama-se Fluent.
Utilizando o Eloquent
Para fazer uso do Eloquent para a tabela tasks que criamos precisamos definir os nossos modelos de dados (models).
Para isso, vamos até a pasta app/models e criamos um arquivo com o nome de um objeto que ficará cadastrado dentro da tabela tasks.
Ou seja, a tabela tasks salva objetos task.
Molesa!
Dentro desse arquivo, o Task.php, vamos criar a classe que define o nosso task.
Essa classe irá herdar de Eloquent, visto que desejamos fazer uso das facilidades do Eloquent.
Assim sendo, temos o arquivo Task.php:
<?php class Task extends Eloquent { }
Observação: Note que o nome da classe, assim como o nome do arquivo, começam com a letra maiúscula.
Entendendo a Classe
Você com certeza está espantado com a quantidade de código escrita.
É normal, isso aconteceu comigo também.
Como o Eloquent sabe qual a tabela que deve utilizar?
Note que não descrevemos na classe nenhuma tabela a ser utilizada.
Por padrão, o Eloquente assume que a tabela a ser utilizada é o nome da classe + ‘s’.
Se a nossa classe chama-se task o Eloquent assume que a tabela deve existir no banco de dados com o nome tasks (TUDO MINÚSCULO!!!!)
Mas e se minha tabela fosse outra?
Se sua tabela, ao invés de se chamar tasks tivesse outro nome, como resolver?
Digamos que sua tabela chame-se cdvagabundo, basta informar ao Eloquent, deixando o arquivo Task.php desse jeito:
<?php class Task extends Eloquent { protected $table = 'cdvagabundo'; }
Mas como o Eloquent sabe quais são as colunas da tabela?
Ele não sabe.
Simples assim.
Mais para frente, quando formos utilizar o ORM, ficará mais claro tudo o que fizemos aqui.