Get in touch: info@example.com
Mon-Sat 09:00 AM - 06:00 PM 🕒

CRUD básico com Laravel

Aqui está um tutorial passo a passo para criar um CRUD (Create, Read, Update, Delete) de produtos em Laravel:

  1. Instalar o Laravel: Antes de tudo, você precisa instalar o Laravel. Para fazer isso, você precisa ter o composer instalado na sua máquina. Em seguida, abra o terminal e execute o seguinte comando:
phpCopy codecomposer create-project --prefer-dist laravel/laravel nome-do-projeto
  1. Criar o modelo de produtos: Execute o seguinte comando para criar o modelo de produtos:
phpCopy codephp artisan make:model Product -m
  1. Criar a tabela de produtos: Agora, você precisa criar a tabela de produtos no banco de dados. Para isso, edite o arquivo database/migrations/{timestamp}_create_products_table.php e adicione as colunas desejadas para a tabela de produtos. Por exemplo:
phpCopy code<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProductsTable extends Migration
{
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->text('description');
            $table->decimal('price', 8, 2);
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('products');
    }
}

Em seguida, execute o seguinte comando para criar a tabela no banco de dados:

Copy codephp artisan migrate
  1. Criar o controlador de produtos: Execute o seguinte comando para criar o controlador de produtos:
phpCopy codephp artisan make:controller ProductController
  1. Adicionar rotas para as operações CRUD: Edite o arquivo routes/web.php e adicione as seguintes rotas para as operações CRUD:
phpCopy codeRoute::get('/products', 'ProductController@index');
Route::get('/products/create', 'ProductController@create');
Route::post('/products', 'ProductController@store');
Route::get('/products/{id}/edit', 'ProductController@edit');
Route::put('/products/{id}', 'ProductController@update');
Route::delete('/products/{id}', 'ProductController@destroy');
  1. Aqui está um exemplo de como o controlador de produtos poderia ser implementado em Laravel para as operações CRUD:

phpCopy code<?php

namespace App\Http\Controllers;

use App\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    /**
     * Display a listing of the products.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $products = Product::all();

        return view('products.index', compact('products'));
    }

    /**
     * Show the form for creating a new product.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('products.create');
    }

    /**
     * Store a newly created product in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'description' => 'required',
            'price' => 'required|numeric',
        ]);

        $product = new Product([
            'name' => $request->get('name'),
            'description' => $request->get('description'),
            'price' => $request->get('price'),
        ]);

        $product->save();

        return redirect('/products')->with('success', 'Product added successfully');
    }

    /**
     * Show the form for editing the specified product.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $product = Product::find($id);

        return view('products.edit', compact('product'));
    }

    /**
     * Update the specified product in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $request->validate([
            'name' => 'required',
            'description' => 'required',
            'price' => 'required|numeric',
        ]);

        $product = Product::find($id);
        $product->name = $request->get('name');
        $product->description = $request->get('description');
        $product->price = $request->get('price');
        $product->save();

        return redirect('/products')->with('success', 'Product updated successfully');
    }

    /**
     * Remove the specified product from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $product = Product::find($id);
        $product->delete();

        return redirect('/products')->with('success', 'Product deleted successfully');
    }
}

Aqui estão as views que você precisaria criar para implementar as operações CRUD de produtos em Laravel:

  1. Arquivo resources/views/products/index.blade.php para listagem dos produtos:
lessCopy code@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Products</h1>
    @if (session('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
    @endif
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Description</th>
                <th>Price</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($products as $product)
            <tr>
                <td>{{ $product->id }}</td>
                <td>{{ $product->name }}</td>
                <td>{{ $product->description }}</td>
                <td>{{ $product->price }}</td>
                <td>
                    <a href="{{ route('products.edit', $product->id) }}" class="btn btn-primary">Edit</a>
                    <form action="{{ route('products.destroy', $product->id) }}" method="POST" style="display: inline">
                        @csrf
                        @method('DELETE')
                        <button type="submit" class="btn btn-danger">Delete</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>
    <a href="{{ route('products.create') }}" class="btn btn-primary">Add Product</a>
</div>
@endsection
  1. Arquivo resources/views/products/create.blade.php para adicionar um novo produto:
lessCopy code@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Add Product</h1>
    <form action="{{ route('products.store') }}" method="POST">
        @csrf
        <div class="form-group">
            <label for="name">Name:</label>
            <input type="text" name="name" id="name" class="form-control" required>
        </div>
        <div class="form-group">
            <label for="description">Description:</label>
            <textarea name="description" id="description" class="form-control" required></textarea>
        </div>
        <div class="form-group">
            <label for="price">Price:</label>
            <input type="text" name="price" id="price" class="form-control" required>
        </div>
        <button type="submit" class="btn btn-primary">Save</button>
    </form>
</div>
@endsection

View edit do crud produtos em laravel

Arquivo resources/views/products/edit.blade.php para editar um produto existente:

lessCopy code@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Edit Product</h1>
    <form action="{{ route('products.update', $product->id) }}" method="POST">
        @csrf
        @method('PUT')
        <div class="form-group">
            <label for="name">Name:</label>
            <input type="text" name="name" id="name" class="form-control" value="{{ $product->name }}" required>
        </div>
        <div class="form-group">
            <label for="description">Description:</label>
            <textarea name="description" id="description" class="form-control" required>{{ $product->description }}</textarea>
        </div>
        <div class="form-group">
            <label for="price">Price:</label>
            <input type="text" name="price" id="price" class="form-control" value="{{ $product->price }}" required>
        </div>
        <button type="submit" class="btn btn-primary">Save</button>
    </form>
</div>
@endsection

View show do crud produtos em laravel

Arquivo resources/views/products/show.blade.php para exibir detalhes de um produto:

phpCopy code@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Product Details</h1>
    <table class="table table-bordered">
        <tr>
            <th>Name</th>
            <td>{{ $product->name }}</td>
        </tr>
        <tr>
            <th>Description</th>
            <td>{{ $product->description }}</td>
        </tr>
        <tr>
            <th>Price</th>
            <td>{{ $product->price }}</td>
        </tr>
    </table>
    <a href="{{ route('products.index') }}" class="btn btn-secondary">Back</a>
</div>
@endsection

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *



Scroll back to top