🌙
Luna - Framework PHP
  • Conheça o Luna
  • Notas de atualizações
  • Iniciando
    • Instalação
    • Configuração
    • Exemplo
  • O básico
    • Routers
    • Middlewares
    • Cache
    • Controllers
    • Services
    • Helpers
    • Views
    • Flash Messages
    • Components
    • Pagination
    • Database
    • Models
    • SEO
    • Environment
Powered by GitBook
On this page
  1. O básico

Models

Os models são formas práticas de referencias uma tabela do banco de dados dentro do projeto possibilitando (através do eloquent) que haja uma usabilidade e tratamento simples dos dados.

A model deve ser criada em /app/Models:

namespace App\Models;

use \App\Db\Database;
use \Illuminate\Database\Eloquent\Model;

class Product extends Model {}

A simples criação do model já estabelece uma conexão, no exemplo acima o model Product está se conectando com a tabela products do banco de dados e considerando que a chave primária será a coluna id. Contudo, existe a chance que seu projeto não siga essa convenção e (talvez) a chave primária seja cd_product, nesses casos será necessário personalizar o model:

class Product extends Model {
        protected $table = 'tb_product';
        protected $primaryKey = 'cd_product';
}

Também é possível criar alias para melhorar a leitura do código, certamente é mais prático ler $product->name ou $product->id ao invés de $product->nm_product ou $product->cd_product (respectivamente). Para resolver essa situação é necessário adicionar algumas novas linhas o model:

class Product extends Model {
        // ...
        
        private $aliases = [
            'id'    => 'cd_product',
            'name'  => 'nm_product'
        ];

        public function __get($key) {
            return $this->getAttribute($this->aliases[$key] ?? $key);
        }
}

Usando um model

O uso do model pode ser realizado da seguinte forma:

use \App\Models\Product;

class Product {
    public function getProduct() {
        return Product::find(1);
    }
    
    public function getProducts() {
        return Product::all();
    }
}
PreviousDatabaseNextSEO

Last updated 2 years ago

Todas as funções podem ser encontradas na documentação completa .

aqui