Menbuat Create, Read, Update dan Delete (CRUD) di Laravel

 


pada tutorial kali ini kita akan membuat CRUD dilaravel jadi langsung saja

pertama buat project dengan perintah

composer create-project laravel/laravel crud-laravel

tunggu proses download sampai selesai.

buka file project di editor, disini Saya menggunkan VScode kemudian buat database dengan nama crud_laravel di phpmyadmin dan atur koneksi databsenya di file .env

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

selanjutnya kita buat struktur tabel dengan migrations dengan perintah di terminal/cmd

php artisan make:migration artikel

selanjutnya kita edit file migration yang behasil di generate dengan menambahkan field yang dibutuhkan di table terse but seperti berikut ini

crud-laravel/database/migrations/2021_09_04_050427_artikel.php

<?php

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

class Artikel extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('artikel', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->mediumText('deskripsi');
            $table->string('kategori');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('artikel');
    }
}

selanjutnya kembali lagi terminal/cmd kemudian kita generate tabelnya dengan perintah

php artisan migrate

Jika berhasil migrate maka di database crud_laravel ada tabel artikel.

selanjutnya kita akan buat model artikel dengan perintah

php artisan make:model Artikel

selanjutnya edit file model tersebut menjadi seperti berikut ini 

crud-laravel/app/Models/Artikel.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Artikel extends Model
{
    use HasFactory;

    protected $table = 'artikel';
    protected $fillable = [
        'judul',
        'deskripsi',
        'kategori',
    ];
}

selanjutnya kita buat controller artikel dengan perintah

php artisan make:controller ArtikelController

selanjutnya edit file controller artikel tersebut menjadi seperti berikut ini 

crud-laravel/app/Http/Controllers/ArtikelController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Artikel;

class ArtikelController extends Controller
{
    // untuk menampilkan list data
    public function index()
    {
        $data = Artikel::paginate(5);
        return view('artikel.index', compact('data'));
    }

    // untuk menampilkan form input
    public function create()
    {
        return view('artikel.create');
    }

    // untuk menyimpan data
    public function store(Request $request)
    {
        $model = $request->all();
        Artikel::create($model);
        return redirect('artikel');
    }

    // untuk menampilkanform edit
    public function edit($id)
    {
        $data = Artikel::find($id);
        return view('artikel.edit', compact('data'));
    }

    // untuk mengupdate data
    public function update(Request $request)
    {
        $model = $request->all();
        $data = Artikel::find($model['id']);
        $data->update($model);
        return redirect('artikel');
    }

    // untuk menhapus data
    public function destroy($id)
    {
        $data = Artikel::find($id)->delete();
        return redirect('artikel');
    }
}

selanjutnya kita akan membuat form until menampilkan dan menginput datanya. silahkan buat folder artikel di dalam folder resource/view/artikel dan dialam folder artikel buat  3 file dengan nama index.blade,php, create.blade.php dan edit.blade.php

selanjutnya kita kirtikkan sintax htmlnya untuk membuat tampilannya seperti berikut ini

file index.blade.php untuk menampilkan list data artikel

crud-laravel/resources/views/artikel/index.blade.php

<!DOCTYPE html>
<html lang="en">

<head>
    <title>CRUD Laravel Example</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>

<body>

    <div class="container">
        <br>
        <h2>Artikel</h2>
        <a href="{{route('artikel.create')}}" class="btn btn-success">Add New Data</a>
        <br>
        <br>
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th  width="6%">No</th>
                    <th  width="17%">Judul</th>
                    <th  width="*%">Deskripsi</th>
                    <th  width="13%">Kategori</th>
                    <th width="12%">Aksi</th>
                </tr>
            </thead>
            <tbody>
                @foreach ($data as $key => $d )
                <tr>
                    <td>{{++$key}}</td>
                    <td>{{ $d->judul}}</td>
                    <td>{{ $d->deskripsi}}</td>
                    <td>{{ $d->kategori}}</td>
                    <td>
                        <a href="{{url('artikel/edit/'.$d->id)}}" class="btn btn-warning btn-sm">edit</a>
                        <a href="{{url('artikel/delete/'.$d->id)}}" class="btn btn-danger btn-sm">delete</a>
                    </td>
                </tr>
                @endforeach
            </tbody>
        </table>
        {{ $data->links()}}
    </div>

</body>

</html>


file create.blade.php untuk menampilkan form input data artikel

crud-laravel/resources/views/artikel/create.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
    <br>
  <h2>Form Artikel</h2>
  <p>create new data</p>
  <form action="{{ route('artikel.store') }}" method="POST">
    @csrf
    <div class="form-group">
      <label for="judul">Judul:</label>
      <input type="text" class="form-control" placeholder="Judul" name="judul" required>
    </div>
    <div class="form-group">
      <label for="deskripsi">Deskripsi:</label>
      <textarea class="form-control" rows="5" cols="5" name="deskripsi" placeholder="Deskripsi"></textarea>
    </div>
    <div class="form-group">
      <label for="kategori">Kategori:</label>
      <select name="kategori" class="form-control" required>
            <option value="">-- pilih --</option>
            <option>php</option>
            <option>java</option>
            <option>js</option>
      </select>
    </div>
    <button type="submit" class="btn btn-primary">Save</button>
  </form>
</div>

</body>
</html>


file edit.blade.php untuk menampilkan form edit data artikel

crud-laravel/resources/views/artikel/edit.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
    <br>
  <h2>Form Artikel</h2>
  <p>create new data</p>
  <form action="{{ route('artikel.update') }}" method="POST">
    <input type="hidden" name="id" value="{{$data->id}}">

    @csrf
    <div class="form-group">
      <label for="judul">Judul:</label>
      <input type="text" class="form-control" placeholder="Judul" name="judul" required value="{{$data->judul}}">
    </div>
    <div class="form-group">
      <label for="deskripsi">Deskripsi:</label>
      <textarea class="form-control" rows="5" cols="5" name="deskripsi">{{$data->deskripsi}}</textarea>
    </div>
    <div class="form-group">
      <label for="kategori">Kategori:</label>
      <select name="kategori" class="form-control" >
            <option {{$data->kategori == 'php' ? 'selected="selected"' : ''}}>php</option>
            <option {{$data->kategori == 'java' ? 'selected="selected"' : ''}}>java</option>
            <option {{$data->kategori == 'js' ? 'selected="selected"' : ''}}>js</option>
      </select>
    </div>
    <button type="submit" class="btn btn-primary">Save</button>
  </form>
</div>

</body>
</html>


Jika Judah terakhir kita buatkan routenya agar data diakses melaui broser, edit file web.php

crud-laravel/routes/web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArtikelController as Artikel;


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

# route artikel
Route::group(['prefix' => '/artikel'], function () {
    Route::get('/', [Artikel::class, 'index'])->name('artikel');
    Route::get('/create', [Artikel::class, 'create'])->name('artikel.create');
    Route::post('/store', [Artikel::class, 'store'])->name('artikel.store');
    Route::get('/edit/{id}', [Artikel::class, 'edit'])->name('artikel.edit');
    Route::post('/update', [Artikel::class, 'update'])->name('artikel.update');
    Route::get('/delete/{id}', [Artikel::class, 'destroy'])->name('artikel.delete');
});

Jika sudah silahkan jalankan projectnya dengan perintah 

php artisan serve

kemudian akses broser 127.0.0.1:8000/artikel

untuk source code lengkapnya  bisa download di sini-->link GitHub

sekian dulu tutorial kali ini dan terima kasih.


No comments

Powered by Blogger.