Tutorial CRUD Laravel 10

Halo,

Saya akan menunjukkan kepada Tutorial CRUD menggunakan Laravel 10. Saya jelaskan secara sederhana step by step build aplikasi Laravel 10 crud. contoh ini akan membantu Anda aplikasi Laravel 10 crud untuk pemula. Anda akan belajar tutorial cara membuat crud di Laravel 10. Di sini, Membuat contoh dasar operasi crud di Laravel 10.

Tutorial CRUD Laravel 10 - SolusiProgramming

Laravel 10 baru saja dirilis kemarin, Laravel 10 memberikan beberapa fitur baru dan dukungan LTS. Jadi jika Anda baru mengenal laravel maka tutorial ini akan membantu Anda membuat aplikasi insert update delete di Laravel 10.

Dalam contoh ini, kita akan membuat aplikasi crud produk menggunakan Laravel 10. kita akan membuat tabel produk dengan kolom nama dan detail menggunakan migrasi Laravel 10, kemudian kita akan membuat file rute, pengontrol, tampilan, dan model untuk modul produk. kami akan menggunakan bootstrap 5 untuk desain sekarang. jadi mari ikuti langkah di bawah ini untuk membuat operasi kasar dengan Laravel 10.

Langkah 1: Menginstall Laravel 10

Kita akan membuat sebuah project menggunakan Laravel 10 namun jika kamu sudah membuat project Laravel 10 kamu bisa skip langkah pertama ini.

composer create-project laravel/laravel example-app

Langkah 2: Konfigurasi Database

Pada langkah yang kedua ini, kita akan merubah konfigurasi database, yang kita butuhkan adalah nama database, username dan password untuk mengakses ke database mysql. Silahkan kamu buka file .env lalu kamu rubah beberapa bagian seperti dibawah ini.

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=here your database name(blog)
DB_USERNAME=here database username(root)
DB_PASSWORD=here database password(root)

Langkah 3: Membuat Database Migration

Sekarang kita akan membuat tabel "products" menggunakan Laravel Migration, silahkan buka command promt / cmd / terminal untuk membuat file migration.

php artisan make:migration create_products_table --create=products

Setelah kamu mengeksekusi perinta diatas kamu akan menemukan file baru pada folder "database/migration", lalu silahkan kamu rubah file migration untuk membuat tabel products.

<?php
  
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
  
return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('detail');
            $table->timestamps();
        });
    }
  
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
};

Sekarang kamu bisa menjalankan migration dengan menggunakan perintah dibawah ini

php artisan migrate

Langkah 4: Membuat Controller dan Model

Pada langkah ini kita akan membuat resource controller dengan nama ProductController. Silahkan kamu jalankan perintah dibawah ini untuk membuat resource controller.

php artisan make:controller ProductController --resource --model=Product

Setelah kamu mengeksekusi perintah diatas, kamu bisa lihat ada file baru pada path "app/Http/Controllers/ProductController.php"

Pada controller ini kita akan membuat 7 buah method seperti dibawah ini:

1)index()

2)create()

3)store()

4)show()

5)edit()

6)update()

7)destroy()

Silahkan kamu copy code dibawah ini ke file ProductController.php

app/Http/Controllers/ProductController.php

<?php
  
namespace App\Http\Controllers;
  
use App\Models\Product;
use Illuminate\Http\Request;
  
class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        $products = Product::latest()->paginate(5);
      
        return view('products.index',compact('products'))
            ->with('i', (request()->input('page', 1) - 1) * 5);
    }
  
    /**
     * Show the form for creating a new resource.
     *
     * @return IlluminateHttpResponse
     */
    public function create()
    {
        return view('products.create');
    }
  
    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'detail' => 'required',
        ]);
      
        Product::create($request->all());
       
        return redirect()->route('products.index')
                        ->with('success','Product created successfully.');
    }
  
    /**
     * Display the specified resource.
     *
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function show(Product $product)
    {
        return view('products.show',compact('product'));
    }
  
    /**
     * Show the form for editing the specified resource.
     *
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function edit(Product $product)
    {
        return view('products.edit',compact('product'));
    }
  
    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, Product $product)
    {
        $request->validate([
            'name' => 'required',
            'detail' => 'required',
        ]);
      
        $product->update($request->all());
      
        return redirect()->route('products.index')
                        ->with('success','Product updated successfully');
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  AppModelsProduct  $product
     * @return IlluminateHttpResponse
     */
    public function destroy(Product $product)
    {
        $product->delete();
       
        return redirect()->route('products.index')
                        ->with('success','Product deleted successfully');
    }
}

Baiklah, selain membuat resource controller, perintah yang telah kita eksekusi tadi juga membuat sebuah file baru pada path "app/Models/Product.php" silahkan kamu ganti menggunakan code yang ada dibawah ini.

app/Models/Product.php
<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\Has\Factory;
use Illuminate\Database\Eloquent\Model;
  
class Product extends Model
{
    use HasFactory;
  
    protected $fillable = [
        'name', 'detail'
    ];
}

Langkah 5: Menambahkan Resource Route

Berikutnya kita perlu menambahkan sebuah resource route untuk Crud Product application yang akan kita buat, untuk membuatnya silahkan buka file "routes/web.php" lalu modifikasi seperti code dibawah ini.

routes/web.php
<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\Product\Controller;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group that
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::resource('products', ProductController::class);

Langkah 6: Menambahkan File Template Blade

Pada langkah ini, kita akan membuat beberapa blade file untuk templatenya, untuk membuatnya silahkan buat folder baru pada path "resource/views/" dengan nama "products" lalu buat beberapa file baru dengan nama sebagai berikut

1) layout.blade.php

2) index.blade.php

3) create.blade.php

4) edit.blade.php

5) show.blade.php

Setelah kamu membuat file tersebut silahkan copy paste code dibawah ini ke masing-masing file ya

resources/views/products/layout.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>Tutorial CRUD Laravel 10 - SolusiProgramming</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    
<div class="container">
    @yield('content')
</div>
    
</body>
</html>

resources/views/products/index.blade.php
@extends('products.layout')
 
@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Tutorial CRUD Laravel 10 - SolusiProgramming</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-success" href="{{ route('products.create') }}"> Create New Product</a>
            </div>
        </div>
    </div>
   
    @if ($message = Session::get('success'))
        <div class="alert alert-success">
            <p>{{ $message }}</p>
        </div>
    @endif
   
    <table class="table table-bordered">
        <tr>
            <th>No</th>
            <th>Name</th>
            <th>Details</th>
            <th width="280px">Action</th>
        </tr>
        @foreach ($products as $product)
        <tr>
            <td>{{ ++$i }}</td>
            <td>{{ $product->name }}</td>
            <td>{{ $product->detail }}</td>
            <td>
                <form action="{{ route('products.destroy',$product->id) }}" method="POST">
   
                    <a class="btn btn-info" href="{{ route('products.show',$product->id) }}">Show</a>
    
                    <a class="btn btn-primary" href="{{ route('products.edit',$product->id) }}">Edit</a>
   
                    @csrf
                    @method('DELETE')
      
                    <button type="submit" class="btn btn-danger">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </table>
  
    {!! $products->links() !!}
      
@endsection

resources/views/products/create.blade.php
@extends('products.layout')
  
@section('content')
<div class="row">
    <div class="col-lg-12 margin-tb">
        <div class="pull-left">
            <h2>Add New Product</h2>
        </div>
        <div class="pull-right">
            <a class="btn btn-primary" href="{{ route('products.index') }}"> Back</a>
        </div>
    </div>
</div>
   
@if ($errors->any())
    <div class="alert alert-danger">
        <strong>Whoops!</strong> There were some problems with your input.<br><br>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
   
<form action="{{ route('products.store') }}" method="POST">
    @csrf
  
     <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Name:</strong>
                <input type="text" name="name" class="form-control" placeholder="Name">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Detail:</strong>
                <textarea class="form-control" style="height:150px" name="detail" placeholder="Detail"></textarea>
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </div>
   
</form>
@endsection

resources/views/products/edit.blade.php
@extends('products.layout')
   
@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Edit Product</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('products.index') }}"> Back</a>
            </div>
        </div>
    </div>
   
    @if ($errors->any())
        <div class="alert alert-danger">
            <strong>Whoops!</strong> There were some problems with your input.<br><br>
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
  
    <form action="{{ route('products.update',$product->id) }}" method="POST">
        @csrf
        @method('PUT')
   
         <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Name:</strong>
                    <input type="text" name="name" value="{{ $product->name }}" class="form-control" placeholder="Name">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Detail:</strong>
                    <textarea class="form-control" style="height:150px" name="detail" placeholder="Detail">{{ $product->detail }}</textarea>
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12 text-center">
              <button type="submit" class="btn btn-primary">Submit</button>
            </div>
        </div>
   
    </form>
@endsection

resources/views/products/show.blade.php
@extends('products.layout')
  
@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2> Show Product</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('products.index') }}"> Back</a>
            </div>
        </div>
    </div>
   
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Name:</strong>
                {{ $product->name }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Details:</strong>
                {{ $product->detail }}
            </div>
        </div>
    </div>
@endsection

Menjalankan Aplikasi Laravel

Jika semua langkah telah kamu lakukan, berikutnya adalah kamu akan menjalankan aplikasi Laravel 10 ini, silahkan eksekusi perintah dibawah ini.

php artisan serve

Lalu kamu buka browser, dan tuliskan pada alamat url

http://localhost:8000/products

Screenshot hasil Tutorial CRUD Laravel 10

Tutorial CRUD Laravel 10 - SolusiProgramming

Tutorial CRUD Laravel 10 - SolusiProgramming

Tutorial CRUD Laravel 10 - SolusiProgramming

Tutorial CRUD Laravel 10 - SolusiProgramming

Selamat kamu telah berhasil membuat Tutorial Crud menggunakan Laravel 10, ini merupakan Contoh Tutorial Aplikasi CRUD Laravel 10.

Previous Post Next Post