Folha de referência Laravel
Uma referência Laravel pesquisável e imprimível — Artisan, encaminhamento, Eloquent, o query builder, migrações, Blade, validação e coleções. Grátis.
Artisan CLI
14php artisan serve
Inicia o servidor de desenvolvimento local
php artisan make:model Post -mcr
Modelo com migração, controlador e resource
php artisan make:controller PostController
Gera uma nova classe de controlador
php artisan make:migration create_posts_table
Cria um novo ficheiro de migração
php artisan migrate
Executa as migrações de base de dados pendentes
php artisan migrate:fresh --seed
Apaga todas as tabelas, remigra e popula
php artisan db:seed
Executa os seeders da base de dados
php artisan tinker
Abre um shell REPL interativo
php artisan route:list
Lista todas as rotas registadas
php artisan optimize
Faz cache de config, rotas e views
php artisan queue:work
Processa jobs na fila
php artisan schedule:work
Executa o agendador em primeiro plano
php artisan storage:link
Cria symlink de storage para o caminho público
php artisan key:generate
Gera a chave da aplicação
Roteamento
13Route::get('/users', [UserController::class, 'index'])
Define uma rota GET para um controlador
Route::post('/users', [UserController::class, 'store'])
Define uma rota POST
Route::put('/users/{user}', [UserController::class, 'update'])
Define uma rota PUT
Route::patch('/users/{user}', [UserController::class, 'update'])
Define uma rota PATCH
Route::delete('/users/{user}', [UserController::class, 'destroy'])
Define uma rota DELETE
Route::get('/users/{id}', $fn)
Parâmetro de rota obrigatório
Route::get('/users/{id?}', $fn)
Parâmetro de rota opcional
Route::get('/profile', $fn)->name('profile')
Nomeia uma rota para geração de URL
Route::get('/admin', $fn)->middleware('auth')
Anexa middleware a uma rota
Route::resource('posts', PostController::class)
Regista rotas de resource RESTful
Route::prefix('admin')->group(function () {})
Agrupa rotas sob um prefixo de URI
Route::controller(PostController::class)->group($fn)
Agrupa rotas para um controlador
Route::fallback($fn)
Trata rotas não correspondidas (404)
Controladores
10php artisan make:controller PostController --resource
Controlador de resource com métodos CRUD
public function __invoke(Request $request)
Controlador invocável de ação única
public function index() {}
Lista recursos (método de resource)
public function store(Request $request) {}
Persiste um novo recurso
public function show(Post $post) {}
Mostra um recurso (route model binding)
public function __construct(PostService $svc) {}
Injeta uma dependência via construtor
return view('posts.index', ['posts' => $posts])
Retorna uma view Blade com dados
return response()->json($data)
Retorna uma resposta JSON
return redirect()->route('posts.index')
Redireciona para uma rota nomeada
return back()
Redireciona para a página anterior
Eloquent ORM
14Post::all()
Obtém todos os registos
Post::find($id)
Encontra um registo por chave primária
Post::where('active', true)->first()
Primeiro registo que corresponde a uma condição
Post::create(['title' => 'Hi'])
Atribui em massa e persiste um registo
$post->update(['title' => 'Edited'])
Atualiza um modelo existente
$post->delete()
Apaga uma instância de modelo
Post::firstOrCreate(['slug' => $slug])
Encontra ou cria um registo correspondente
Post::updateOrCreate($attrs, $values)
Atualiza se encontrado, caso contrário cria
Post::with('author')->get()
Carrega uma relação de forma eager
public function comments() { return $this->hasMany(Comment::class); }
Relação um-para-muitos
public function author() { return $this->belongsTo(User::class); }
Relação um-para-muitos inversa
protected $fillable = ['title', 'body'];
Atributos atribuíveis em massa
protected function casts(): array { return ['published_at' => 'datetime']; }
Casts de atributos (método casts())
Post::onlyTrashed()->restore()
Restaura registos eliminados de forma suave
Query builder
13DB::table('users')->get()
Obtém todas as linhas de uma tabela
DB::table('users')->where('votes', '>', 100)->get()
Filtra linhas por uma condição
DB::table('users')->join('posts', 'users.id', '=', 'posts.user_id')
Faz inner join de duas tabelas
DB::table('users')->orderBy('name')->get()
Ordena resultados por uma coluna
DB::table('orders')->groupBy('status')->get()
Agrupa linhas por uma coluna
DB::table('users')->select('name', 'email')->get()
Selecionar colunas específicas
DB::table('users')->insert(['name' => 'Sam'])
Insere uma nova linha
DB::table('users')->where('id', 1)->update(['votes' => 1])
Atualizar linhas correspondentes
DB::table('users')->pluck('email')
Obtém uma única coluna como coleção
DB::table('users')->count()
Conta linhas correspondentes
DB::table('users')->where('id', 1)->exists()
Verifica se existem linhas
DB::table('users')->paginate(15)
Pagina os resultados
DB::table('users')->chunk(100, $fn)
Processa resultados em blocos
Migrações e esquema
12Schema::create('posts', function (Blueprint $table) {})
Criar uma nova tabela
$table->id()
Chave primária de auto-incremento
$table->string('title')
Coluna VARCHAR
$table->integer('votes')
Coluna inteira
$table->boolean('active')
Coluna booleana
$table->timestamps()
Colunas created_at e updated_at
$table->foreignId('user_id')->constrained()
Chave estrangeira com restrição
$table->string('note')->nullable()
Permite valores NULL
$table->boolean('active')->default(true)
Define um valor padrão
$table->index('slug')
Adiciona um índice a uma coluna
$table->unique('email')
Adiciona uma restrição de unicidade
$table->dropColumn('votes')
Remove uma coluna
Templates Blade
14@if ($ok) ... @elseif ($x) ... @else ... @endif
Renderização condicional
@foreach ($posts as $post) ... @endforeach
Itera sobre uma coleção
@forelse ($posts as $post) ... @empty ... @endforelse
Loop com fallback vazio
{{ $variable }}
Imprime saída escapada
{!! $html !!}
Imprime HTML bruto sem escape
@extends('layouts.app')
Herda de um layout
@section('content') ... @endsection
Define uma secção de layout
@yield('content')
Emite uma secção num layout
@include('partials.nav')
Inclui outra view
<x-alert type="error" />
Renderiza um componente Blade
@csrf
Campo de token CSRF para formulários
@auth ... @endauth
Mostra conteúdo a utilizadores autenticados
@can('update', $post) ... @endcan
Verificação de gate de autorização
{{ $loop->index }}
Variável de loop dentro de @foreach
Validação
12$request->validate(['title' => 'required'])
Valida dados do pedido inline
'email' => 'required|email'
Regra de e-mail obrigatório e válido
'name' => 'required|max:255'
Obrigatório com comprimento máximo
'email' => 'unique:users,email'
Deve ser único numa tabela
'age' => 'nullable|integer|min:18'
Inteiro opcional com um mínimo
'role' => ['required', Rule::in(['admin', 'user'])]
Restringe a valores permitidos
php artisan make:request StorePostRequest
Gera uma classe Form Request
public function rules(): array { return [...]; }
Regras de validação de Form Request
public function authorize(): bool { return true; }
Autorização de Form Request
public function messages(): array { return [...]; }
Mensagens de validação personalizadas
$validator = Validator::make($data, $rules)
Cria um validador manualmente
$request->validated()
Obtém apenas a entrada validada
Pedidos e respostas
10request()->input('name')
Obtém um valor de entrada
request()->query('page')
Obtém um valor da query string
request()->all()
Obtém toda a entrada como array
request()->only(['name', 'email'])
Obtém um subconjunto da entrada
request()->has('name')
Verifica se uma entrada está presente
response()->json(['ok' => true])
Retorna uma resposta JSON
redirect()->route('home')->with('status', 'Saved')
Redireciona com uma mensagem flash
back()->withInput()
Redireciona de volta mantendo a entrada antiga
abort(404)
Lança uma exceção HTTP
abort_if($user->banned, 403)
Aborta o pedido condicionalmente
Coleções
13$collection->map(fn ($x) => $x * 2)
Transforma cada item
$collection->filter(fn ($x) => $x > 0)
Mantém os itens correspondentes
$collection->each(fn ($x) => $x->save())
Executa um callback por item
$collection->pluck('name')
Extrai uma coluna
$collection->reduce(fn ($c, $x) => $c + $x, 0)
Reduzir a um único valor
$collection->sortBy('created_at')
Ordena por uma chave
$collection->groupBy('status')
Agrupa itens por uma chave
$collection->where('active', true)
Filtra por um par chave/valor
$collection->first()
Obtém o primeiro item
$collection->contains('name', 'Sam')
Verifica se há um item correspondente
$collection->sum('price')
Soma uma coluna
$collection->flatten()
Achata coleções aninhadas
$collection->toArray()
Converte num array simples
Auth e middleware
11Auth::user()
Obtém o utilizador autenticado
Auth::check()
Verifica se um utilizador tem sessão iniciada
Auth::id()
Obtém o ID do utilizador autenticado
Auth::login($user)
Inicia a sessão de um utilizador
Auth::logout()
Termina a sessão do utilizador atual
auth()->user()
Auxiliar para o utilizador atual
Route::get('/home', $fn)->middleware('auth')
Protege uma rota com auth
Gate::allows('update', $post)
Verifica um gate de autorização
$user->can('update', $post)
Verifica uma permissão contra uma policy
php artisan make:policy PostPolicy --model=Post
Gera uma policy de autorização
php artisan make:middleware EnsureTokenIsValid
Gera uma classe de middleware
Auxiliares e diversos
12config('app.name')
Lê um valor de configuração
env('APP_DEBUG', false)
Lê uma variável de ambiente
route('posts.show', $post)
Gera uma URL para uma rota nomeada
url('/dashboard')
Gera uma URL totalmente qualificada
asset('css/app.css')
URL para um recurso público
old('email')
Obtém entrada antiga em flash
now()->addDays(7)
Timestamp Carbon atual
Str::slug('My Title')
Auxiliar de string (slugify)
collect([1, 2, 3])->sum()
Cria uma coleção a partir de um array
cache()->remember('key', 60, $fn)
Faz cache de um valor por uma duração
dd($value)
Despeja um valor e encerra
Storage::put('file.txt', $contents)
Escreve um ficheiro no storage
Nenhuma entrada corresponde a “:q”.
Precisa de ajuda?
Encontrou um problema com esta ferramenta? Avise a nossa equipa.