Belajar Memahami Tentang Model Dan Tampilan Di Laravel 8 - CRUDPRO

Belajar Memahami Tentang Model Dan Tampilan Di Laravel 8

Belajar Memahami Tentang Model Dan Tampilan Di Laravel 8

Laravel Create Model ialah sistem PHP berbasis MVC. Dalam arsitektur MVC, 'M' ialah singkatan dari 'Model'. Sebuah model digunakan sebagai cara untuk mempertanyakan data ke dan dari tabel dalam database. Laravel memberikan cara dasar untuk melakukannya menggunakan Eloquent ORM di mana tiap tabel menggabungkan Model untuk berinteraksi dengannya.

Tampilan berisi kode html yang diperlukan oleh aplikasi Anda, dan ini bisa menjadi strategi di Laravel yang mengisolasi logika pengontrol dan logika domain dari alasan pengenalan. Tampilan ditemukan di dalam pengelola aset, dan caranya adalah sumber daya/tampilan.

MEMBUAT MODEL DI LARAVEL

Cara termudah untuk membuat model ialah perintah Artisan:

php artisan make:model <model name>

Pertama mari kita buat buku tabel baru di database. Gunakan skema berikut:

CREATE TABLE `books` (
 `id` int(11) NOT NULL,
 `name` varchar(256) NOT NULL,
 `category` varchar(256) NOT NULL,
 `description` text NOT NULL
);

Selanjutnya, saya akan membuat model baru untuk tabel books di Laravel. Untuk ini, jalankan perintah ini.

php artisan make:model Books

Saat perintah dijalankan, model baru akan dibuat di folder aplikasi, model ini terlihat seperti:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Books extends Model
{
   //
}

Pada code di atas, kelas mode Books diperluas dari kelas IlluminateDatabaseEloquentModel Laravel. Anda akan melihat jika tidak ada fungsi terkait operasi CRUD database dalam model ini. Anda bisa menggunakan beberapa fungsi Eloquent prebuilt untuk tujuan ini.

Bekerja dengan Eloquent ORM

Hal terbaik tentang Eloquent ORM ialah kemudahan untuk melakukan operasi CRUD pada database. Biasanya, Eloquent menggunakan nama kelas model sebagai nama tabelnya. Namun, Anda juga bisa menentukan nama tabel secara eksplisit dengan mendefinisikan variabel yang dilindungi `$table`.

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Books extends Model
{
    protected $table = “my_books”;
}

Secara default, Eloquent akan menganggap bahwa setiap tabel memiliki kunci utama id nama kolom dan akan bertambah secara otomatis. Jika primary key Anda memiliki nama yang berbeda, Anda dapat dengan mudah mengaturnya dengan mendefinisikannya di `protected $primaryKey`. Ini mengesampingkan pengaturan default. Selain itu, jika kunci utama Anda tidak melakukan penambahan otomatis, Anda dapat dengan mudah menonaktifkannya dengan menentukan `public $incrementing` ke `false`.

Misalnya, mari gunakan nomor ISBN buku sebagai kunci utama dalam tabel. Sekarang, saya dapat membuat perubahan berikut dalam model untuk memberi tahu Eloquent tentang kunci utama ini dan tidak boleh ditambahkan secara otomatis.

namespace App;
use Illuminate\Database\Eloquent\Model;
class Books extends Model
{
    protected $table = “my_books”;
    protected $primaryKey = “isbn_no”;
    public $incrementing = false;
}

Menyimpan Data Menggunakan Eloqueent

Menyimpan data menggunakan Eloquent sangat gampang.

Metode pertama untuk menyimpan data ialah:

public function store(Request $request)
{
    $books = new Books();
    $books->name = $request->name;
    $books->category = $request->category;
    $books->category = $request->category;
    if($books->save()){
        return true;
    }
}

Cara menabung yang kedua adalah :

public function store(Request $request)
{
    if(Books::Create($request->all())){
        return true;
    }
}

Untuk menyimpan data menggunakan metode `Create()`, Anda perlu melakukan dua hal terlebih dahulu.

  1. Anda perlu menentukan kolom yang dapat diisi dalam model:
  2. namespace App;
    use Illuminate\Database\Eloquent\Model;
    class Books extends Model
    {
        protected $fillable = ['name','category','description'];
    }
  3. 2. pastikan nama parameter request yang ingin disimpan di database anda sama dengan nama kolom di database.

Memperbarui data menggunakan Eloquent semudah menyimpan data.

Saat ini saya akan mengedit metode `update(Request $request, Books $book)` sehingga bisa memperbarui data.

public function update(Request $request, Books $books)
{
if($books->fill($request->all())->save()){
return true;
}
}

Bagaimana cara kerjanya? Saat pengguna mengirimkan permintaan put ke `book/{book}`, model di aplikasi Laravel akan secara otomatis mendapatkan buku yang sesuai dengan `{book}`. Jika tidak ada kecocokan, itu akan mengembalikan kesalahan. Alasan di balik ini adalah model terikat pada metode pembaruan. Karena saya telah menetapkan dapat diisi, semua data akan disimpan dengan mudah.

Dapatkan Semua Item Data

Sekarang mari kita edit metode `index()` dari pengontrol sehingga dapat mengembalikan semua data yang disimpan dalam database.

public function index()
{
$books = Books::all();
return $books;
}

Karena saya sudah menggunakan `$books`, Laravel akan mengembalikan data JSON, secara default.

Dapatkan Item Data Tunggal

Saya akan mengedit metode `show(Books $books)` untuk mengembalikan buku tertentu saat pengguna mengirimkan permintaan get ke `book/{book}`. Ini akan mengembalikan buku yang sesuai kunci utama.

public function show(Books $books)
{
return $books;
}

Hapus Item Data Tunggal

Saat ini mari kita edit metode `destroy(Books $books)` dari pengontrol untuk menghapus data terkait ke kunci utama.

public function destroy(Books $books)
{
if($books->delete()){
return true;
}
}

Seperti yang Anda lihat, Eloquent menghilangkan banyak pekerjaan dari bekerja dengan RDBMS. Anda dapat menentukan hubungan tabel di dalamnya dan dengan mudah mendapatkan data dari tabel yang berbeda. Untuk mempelajari lebih lanjut tentang Eloquent dan keajaibannya, lihat dokumentasi resmi Eloquent.

Tampilan di Laravel 8.x

Tampilan di Laravel dibuat di folder sumber daya/tampilan. Anda dapat mengubah jalur dasar untuk tampilan dengan mengedit file config/view.php dan mengubah `realpath(base_path('resources/views'))` ke lokasi baru untuk tampilan.

Laravel menawarkan tampilan sederhana yang mengarahkan ke rumah. Memuat tampilan di pengontrol itu mudah. Anda hanya perlu menambahkan metode `view('viewname')` saat kembali dari metode controller.

public function index()
{
return view('home');
}

`view()` adalah pembantu global di Laravel. Dalam metode ini, Anda hanya perlu memberikan nama tampilan. Misalnya, jika nama lengkap tampilan adalah home.blade.php, Anda hanya perlu meneruskan home ke metode `view()`.

Bagaimana jika Anda menyimpan tampilan Anda di dalam direktori baru di folder tampilan? Tidak perlu khawatir tentang itu!

Misalnya, jika home.blade.php disimpan di dalam direktori dasbor, maka Anda hanya perlu memasukkan nama foldernya, tambahkan titik “.” dan kemudian nama tampilan ke metode `view()` yaitu `view(“dashboard.home”);`

Meneruskan Data Buku ke Tampilan

Mari buat view baru di website Laravel dengan nama book.blade.php di dalam folder views. Tampilan ini akan berisi kode berikut:

<html>

<head>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<! - Optional theme →

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<! - Scripts →

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>

<! - Latest compiled and minified JavaScript →

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

</head>

<body>

<div class="row">

<div class="col-md-6">

<div class="panel panel-primary">

<div class="panel-heading"><h3>{{title_case($book->name)}} <a href="{{url('/todo/'.$todo->id)}}" class="btn btn-warning btn-group-sm pull-right ">Edit</a></h3>

</div>

<div class="panel-body">

{{$book->description}}

</div>

<div class="panel-footer"><strong>Category:</strong> {{$book->category}}</div>

</div>

</div>

</div>

</body>

</html>

Tampilan ini akan menampilkan satu buku dari tabel. Beginilah cara kerja tampilan ini.

Saya akan meneruskan sebuah buku ke tampilan ini dalam metode `show(Books $books)` dari controller.

public function show(Books $books)
{
return view('book',['book' => $books]);
}

Sekarang, setiap kali pengguna mengirim permintaan GET ke `/book/{book}`, tampilan buku akan dikembalikan. Sebagian besar tampilan di Laravel dibuat menggunakan Blade Templating Engine. Sekarang saya akan menunjukkan kepada Anda bagaimana mesin ini bekerja.

Mesin Template Blade

Blade adalah mesin template yang sederhana dan kuat untuk Laravel. Anda juga dapat menambahkan kode PHP vanilla di dalamnya dengan mudah. File template blade memiliki ekstensi .blade.php dan disimpan di folder resources/views. Anda dapat membuat satu template master dan beberapa template anak dapat diperluas dari template master ini. Dalam contoh ini, saya akan mulai dengan mendefinisikan master layout dan kemudian mengembangkannya lebih lanjut. Untuk mempelajari lebih lanjut tentang membuat Layout dari blade, saya sarankan Anda juga membaca Membuat Layout Di Laravel Menggunakan Mesin Templateing Blade.

Buat Layout Utama

Semua Layout master disimpan di folder Layout di dalam folder sumber daya/tampilan.

Saya akan membuat layout sederhana dengan nama app.blade.php. Layout ini akan berisi kode berikut:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>@yield('title')</title>

<! - Compiled and minified JavaScript →

<! - Styles →

<! - <link href="/css/app.css" rel="stylesheet"> →

<! - Latest compiled and minified CSS →

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<! - Optional theme →

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<! - Scripts →

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>

<! - Latest compiled and minified JavaScript →

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

</head>

<body>

<div class="container-fluid">

@yield('content')

</div>

</body>

</html>

Di dalam tampilan aplikasi, saya telah menggunakan markup HTML dan bootstrap untuk penataan. Saya telah menggunakan direktif `@yield`. Arahan ini digunakan untuk menampilkan konten untuk bagian tertentu. Anda dapat memberikan nama unik ke `yield` sehingga saat tampilan ini diperluas ke tampilan lain, saya dapat dengan mudah menambahkan konten baru ke bagian ini.

Memperluas Master Layout

Sekarang mari kita memperluas master layout. Saya telah membuat tampilan untuk menampilkan buku di awal tutorial ini. Sekarang saya akan memperluasnya dari master layout.

@extends('layouts.app')

@section('title', 'Book')

@section('content')

<div class="row">

<div class="col-md-6">

<div class="panel panel-primary">

<div class="panel-heading"><h3>{{title_case($book->name)}} <a href="{{url('/todo/'.$todo->id)}}" class="btn btn-warning btn-group-sm pull-right ">Edit</a></h3>

</div>

<div class="panel-body">

{{$book->description}}

</div>

<div class="panel-footer"><strong>Category:</strong> {{$book->category}}</div>

</div>

</div>

</div>

@endsection

Mari kita lihat apa yang telah saya lakukan. Pertama, saya memberi tahu Blade bahwa saya memperluas dari Layout sebelumnya menggunakan `@extends`. Selanjutnya, saya menggunakan `@section`, yang mengikat konten ke `@yield` yang saya buat di master layout. Di bagian konten, saya telah menentukan kode markup HTML untuk melihat satu buku.

Apa Lagi yang Dapat Anda Lakukan Dengan Blade?

Ini adalah contoh yang sangat sederhana yang menyoroti fungsionalitas Blade. Anda juga dapat menggunakan if-else dan loop di Blade. Untuk mempelajari lebih lanjut tentang Blade, lihat dokumentasi resmi Blade.