9 min read

Tutorial Laravel Crud Untuk Pemula

Iman Sugirman

Laravel 5.8 CRUD Contoh Tutorial Untuk Pemula Dari Awal adalah topik utama saat ini. Laravel 5.8 memiliki beberapa fitur keren baru serta beberapa peningkatan dan perbaikan bug lainnya. Dalam acara Laracon sebelumnya, Taylor Otwell mengumumkan beberapa perubahan penting yang adalah sebagai berikut.

Pertama, mari kita instal Laravel 5.8 menggunakan perintah berikut. Kami akan menggunakan Composer Create-Project untuk menghasilkan laravel 5.8 proyek.

Ketikkan perintah berikut. Pastikan Anda telah menginstal komposer di mesin Anda.

composer create-project --prefer-dist laravel/laravel stocks

Oke, sekarang masuk ke dalam folder dan instal paket npm menggunakan perintah berikut. Persyaratan untuk perintah di bawah ini adalah node.js diinstal pada mesin Anda. Jadi, jika Anda belum menginstal, silakan instal Ikuti Install Nodejs.

npm install

Konfigurasikan Database MySQL

Sekarang, pertama, di MySQL, Anda perlu membuat database, dan kemudian kita perlu menghubungkan database itu ke aplikasi Laravel. Anda juga dapat menggunakan phpmyadmin untuk membuat database.

Sekarang, Setelah membuat database, kita perlu membuka file .env di dalam proyek saham Laravel dan menambahkan kredensial database. Saya telah mengetik kredensial saya; silakan masukkan milik Anda jika tidak terhubung.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel57
DB_USERNAME=root
DB_PASSWORD=root

Jadi sekarang Anda akan dapat menghubungkan database MySQL.

Laravel selalu dikirimkan bersama file migrasi, sehingga Anda dapat membuat tabel dalam database menggunakan perintah berikut.

php artisan migrate

Buat model dan file migrasi.

Pergi ke terminal dan ketik perintah berikut untuk menghasilkan model dan file migrasi.

php artisan make:model Book -m

Ini akan membuat model dan file migrasi. Sekarang, kita akan menulis skema di dalam file <timestamp>create_books_table.php.

<?php
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
    Schema::create('books', function (Blueprint $table) {
        $table->increments('id');
        $table->string('book_name');
        $table->integer('book_price');
        $table->integer('book_qty');
        $table->timestamps();
    });
}

Migrasikan Database

Oke sekarang, migrasi tabel menggunakan perintah berikut.

php artisan migrate

Sekarang, tambahkan properti yang bisa diisi di dalam file Book.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Book extends Model
{
  protected $fillable = [
    'book_name',
    'book_price',
    'book_qty'
  ];
}

Buat Route dan Controller

Pertama, buat BookController menggunakan perintah berikut.

php artisan make:controller BookController --resource

Sekarang, di dalam route/web.php, tambahkan baris kode berikut.

<?php

Route::get('/', function () {
    return view('welcome');
});

Route::resource('books', 'BookController');

Sebenarnya, dengan menambahkan baris berikut, kami telah mendaftarkan banyak rute untuk aplikasi kami. Kita dapat memeriksanya menggunakan perintah berikut.

php artisan route:list

Oke, sekarang buka file BookController.php, dan Anda dapat melihat bahwa semua fungsi deklarasi ada di sana.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BookController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Buat Bagian View

Di dalam folder resources/views, buat satu folder bernama book.

Di dalam folder itu, buat tiga file berikut.

create.blade.php
edit.blade.php
index.blade.php

Namun di dalam folder views, kita juga perlu membuat file layout. Jadi buat satu file di dalam folder views bernama layout.blade.php. Tambahkan kode berikut di dalam file layout.blade.php.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Laravel 5.8 CRUD Example Tutorial</title>
  <link href="{{ asset('css/app.css') }}" rel="stylesheet" type="text/css" />
</head>
<body>
  <div class="container">
    @yield('content')
  </div>
  <script src="{{ asset('js/app.js') }}" type="text/js"></script>
</body>
</html>

Jadi pada dasarnya file ini adalah file template utama kami, dan semua file tampilan lainnya akan memperpanjang file ini. Di sini, kami telah menyertakan bootstrap empat dengan menambahkan app.css.

Langkah selanjutnya adalah membuat kode file create.blade.php. Jadi tulis kode berikut di dalamnya.

@extends('layout')

@section('content')
<style>
  .uper {
    margin-top: 40px;
  }
</style>
<div class="card uper">
  <div class="card-header">
    Add book
  </div>
  <div class="card-body">
    @if ($errors->any())
      <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
            @endforeach
        </ul>
      </div><br />
    @endif
      <form method="post" action="{{ route('book.store') }}">
          <div class="form-group">
              @csrf
              <label for="name">Book Name:</label>
              <input type="text" class="form-control" name="book_name"/>
          </div>
          <div class="form-group">
              <label for="price">Book Price :</label>
              <input type="text" class="form-control" name="book_price"/>
          </div>
          <div class="form-group">
              <label for="quantity">Book Quantity:</label>
              <input type="text" class="form-control" name="book_qty"/>
          </div>
          <button type="submit" class="btn btn-primary">Add</button>
      </form>
  </div>
</div>
@endsection

Oke, sekarang kita perlu membuka file BookController.php, dan pada fungsi create, kita perlu mengembalikan view, dan itu adalah file create.blade.php.

<?php
// bookController.php

public function create()
{
   return view('books.create');
}

Simpan file dan mulai server pengembangan Laravel menggunakan perintah berikut.

php artisan serve

Buka http://localhost:8000/books/create.

Simpan Data dengan Method Store

Sekarang, kita perlu kode fungsi toko untuk menyimpan data dalam database. Pertama, sertakan model Book.php di dalam file BookController.php.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\book;

class bookController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
      $request->validate([
        'book_name'=>'required',
        'book_price'=> 'required|integer',
        'book_qty' => 'required|integer'
      ]);
      $book = new book([
        'book_name' => $request->get('book_name'),
        'book_price'=> $request->get('book_price'),
        'book_qty'=> $request->get('book_qty')
      ]);
      $book->save();
      return redirect('/books')->with('success', 'Stock has been added');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Jika validasi gagal, maka akan terjadi kesalahan, dan kami akan menampilkan di dalam file create.blade.php.

Jika semua nilai baik dan lulus validasi, maka itu akan menyimpan nilai dalam database.

Menampilkan Data.

Oke, sekarang buka file bernama file index.blade.php dan tambahkan kode berikut.

@extends('layout')

@section('content')
<style>
  .uper {
    margin-top: 40px;
  }
</style>
<div class="uper">
  @if(session()->get('success'))
    <div class="alert alert-success">
      {{ session()->get('success') }}  
    </div><br />
  @endif
  <table class="table table-striped">
    <thead>
        <tr>
          <td>ID</td>
          <td>Stock Name</td>
          <td>Stock Price</td>
          <td>Stock Quantity</td>
          <td colspan="2">Action</td>
        </tr>
    </thead>
    <tbody>
        @foreach($books as $book)
        <tr>
            <td>{{$book->id}}</td>
            <td>{{$book->book_name}}</td>
            <td>{{$book->book_price}}</td>
            <td>{{$book->book_qty}}</td>
            <td><a href="{{ route('books.edit',$book->id)}}" class="btn btn-primary">Edit</a></td>
            <td>
                <form action="{{ route('books.destroy', $book->id)}}" method="post">
                  @csrf
                  @method('DELETE')
                  <button class="btn btn-danger" type="submit">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </tbody>
  </table>
<div>
@endsection

Hal berikutnya adalah kita perlu kode fungsi index() di dalam file BookController.php.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\book;

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

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

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
      $request->validate([
        'book_name'=>'required',
        'book_price'=> 'required|integer',
        'book_qty' => 'required|integer'
      ]);
      $book = new book([
        'book_name' => $request->get('book_name'),
        'book_price'=> $request->get('book_price'),
        'book_qty'=> $request->get('book_qty')
      ]);
      $book->save();
      return redirect('/books')->with('success', 'Stock has been added');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Sekarang, tambahkan baris kode berikut di dalam file edit.blade.php.

@extends('layout')

@section('content')
<style>
  .uper {
    margin-top: 40px;
  }
</style>
<div class="card uper">
  <div class="card-header">
    Edit Book
  </div>
  <div class="card-body">
    @if ($errors->any())
      <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
            @endforeach
        </ul>
      </div><br />
    @endif
      <form method="post" action="{{ route('books.update', $book->id) }}">
        @method('PATCH')
        @csrf
        <div class="form-group">
          <label for="name">Book Name:</label>
          <input type="text" class="form-control" name="book_name" value={{ $book->book_name }} />
        </div>
        <div class="form-group">
          <label for="price">Book Price :</label>
          <input type="text" class="form-control" name="book_price" value={{ $book->book_price }} />
        </div>
        <div class="form-group">
          <label for="quantity">Book Quantity:</label>
          <input type="text" class="form-control" name="book_qty" value={{ $book->book_qty }} />
        </div>
        <button type="submit" class="btn btn-primary">Update</button>
      </form>
  </div>
</div>
@endsection

Terakhir, buat kode fungsi pembaruan di dalam file BookController.php.

<?php

public function update(Request $request, $id)
{
      $request->validate([
        'book_name'=>'required',
        'book_price'=> 'required|integer',
        'book_qty' => 'required|integer'
      ]);

      $book = Book::find($id);
      $book->book_name = $request->get('book_name');
      $book->book_price = $request->get('book_price');
      $book->book_qty = $request->get('book_qty');
      $book->save();

      return redirect('/books')->with('success', 'Stock has been updated');
}

Jadi, sekarang Anda dapat memperbarui nilai yang ada.

Menghapus Data

Cukup kode fungsi hapus di dalam file BookController.php.

<?php

public function destroy($id)
{
     $book = Book::find($id);
     $book->delete();

     return redirect('/books')->with('success', 'Stock has been deleted Successfully');
}

Demikian Tutorial Laravel Crud Untuk Pemula sudah kita bahas. silahkan pantau terus blog ini untuk mendapatkan Tutorial Laravel lainnya.