7 hal Yang Perlu Anda Ketahui Untuk Mendapatkan Hasil Maksimal Dari Model Laravel Anda - CRUDPRO

7 hal Yang Perlu Anda Ketahui Untuk Mendapatkan Hasil Maksimal Dari Model Laravel Anda

7 hal Yang Perlu Anda Ketahui Untuk Mendapatkan Hasil Maksimal Dari Model Laravel Anda

Ketika saya pertama kali mulai mengembangkan di Laravel, saya merasa ada banyak hal yang dapat dilakukan dengan cara yang lebih baik dalam hal mengimplementasikan model. Setelah menyelam di kelas Eloquent Model, saya menemukan beberapa hal menarik yang dapat Anda lakukan dengan model Anda untuk membuat hidup Anda jauh lebih mudah.

Dalam artikel ini saya akan memberikan tujuh tips yang harus diketahui semua orang yang menggunakan Laravel untuk mendapatkan hasil maksimal dari model Anda.

#1 Hal pertama yang pertama, mari kita mulai dengan membuat model

Saat membuat model melalui baris perintah, Anda dapat menentukan folder tempat model harus dibuat. Yang harus Anda lakukan adalah mengetikkan nama folder di depan nama model. Ini berguna ketika model Anda tidak disimpan di folder aplikasi default.

php artisan make:model Models/Product

Ini akan membuat model Produk di folder app/Models, yang menghemat waktu Anda memindahkan model Anda secara manual ke folder yang benar.

# 2 Casting atribut

Properti $casts menyediakan cara untuk mentransmisikan atribut ke tipe data tertentu.

protected $casts = [
    'is_published' => 'boolean'
];

Atribut is_publish sekarang akan selalu dilemparkan ke boolean saat Anda mengaksesnya, bahkan saat disimpan sebagai bilangan bulat di database Anda. Ada banyak jenis tempat Anda dapat menggunakan atribut, seperti tanggal dan waktu.

Kesalahan yang sering saya lihat adalah atribut date dan datetime diformat dalam template Blade, seperti ini:

{{ $blog->created_at->format('Y-m-d') }}

In some Blade templates you will see that formatting happens multiple times on the same variable. This could be done more efficiently via the $casts properti.

For date and datetime casts you can specify the format:

protected $casts = [
    'published_at' => 'datetime:Y-m-d',
];

Ini akan selalu mengembalikan atribut publish_at dalam format Y-m-d, jadi Anda tidak perlu melakukan pemformatan apa pun di template Blade.

Visibilitas # 3

Beberapa atribut tidak boleh disertakan dalam array dan representasi JSON dari suatu model, misalnya atribut kata sandi. Ini adalah saat properti $hidden masuk untuk dimainkan.

protected $hidden = [
    'password'
];

Properti $hidden bertindak seperti daftar hitam untuk atribut. Atau Anda dapat menggunakan properti $visible untuk membuat daftar putih atribut.

protected $visible = [
    'first_name',
    'last_name'
];

Ketika properti $visible diatur pada model, atribut lainnya akan secara otomatis disembunyikan. Ini berfungsi seperti properti $fillable dan $guarded.

#4 Aksesor

Terkadang Anda ingin menggabungkan beberapa atribut menjadi satu atau Anda hanya ingin memformat atribut. Ini dapat dilakukan dengan pengakses di Laravel.

Misalkan Anda memiliki model Pengguna yang memiliki first_name dan last_name. Jika Anda ingin menampilkan nama lengkap Anda bisa melakukannya seperti ini:

$this->first_name . ' ' . $this->last_name

Ini adalah pendekatan yang sangat naif. Cara Laravel untuk mengatasi masalah ini adalah dengan accessor. Accessor adalah metode yang didefinisikan dalam model dengan sintaks berikut:

get[NameOfAttribute]Attribute

Accessor untuk nama lengkap akan terlihat seperti ini:

public function getFullNameAttribute() {
    return "{$this->first_name} {$this->last_name}";
}
Untuk mengakses nilai nama lengkap dari pengakses, Anda harus menyebutnya seperti ini:
$user->full_name
#5 Mutator

Mutator memungkinkan Anda untuk memanipulasi nilai dan mengatur nilai yang dimanipulasi pada properti $attributes dari model Eloquent. Mutator memiliki sintaks yang sama dengan accessor.

public function setLastNameAttribute($value) {
    $this->attributes['last_name'] = ucfirst($value);
}

Mutator ini akan menerapkan fungsi ucfirst ke nama belakang dan menyimpan hasilnya di properti $attributes

$user->last_name = 'jones'; // Will result in `Jones`
.
#6 Menambahkan nilai

Ketika sebuah model memiliki pengakses dan relasi, mereka tidak ditambahkan ke array dan representasi JSON dari model secara default. Untuk melakukan ini, Anda harus menambahkan pengakses atau relasi ke atribut $appends dari model. Mari kita tetap menggunakan contoh pengakses getFullNameAttribute untuk saat ini:

$appends = [
    'full_name'
];

Catatan:

ksesor yang ditambahkan ke atribut $appends direferensikan dalam kasus ular meskipun pengakses didefinisikan dalam kasus camel.

Misalkan model User memiliki hubungan one to many dengan model Blog.

public function blogs() {
    return $this->hasMany(App\Blog::class);
}

Untuk menambahkan blog ke model, Anda cukup menambahkannya ke atribut $appends:

$appends = [
    'full_name',
    'blogs'
];

Dimungkinkan juga untuk menentukan atribut yang harus ditambahkan. Misalnya, jika Anda hanya ingin id dan judul blog ditambahkan ke model.

$appends = [
    'full_name',
    'blogs:id,title'
];
#7 Sentuhan

Ketika sebuah model memiliki hubungan BelongsTo atau BelongsToMany dengan model lain, dalam hal ini Komentar milik Blog, dalam beberapa kasus mungkin berguna untuk memperbarui stempel waktu induk saat anak diperbarui. Ini dapat dilakukan dengan menambahkan hubungan ke atribut $touches.

class Comment extends Model
{
    protected $touches = ['blog'];

    public function blog()
    {
        return $this->belongsTo(App\Blog::class);
    }
}

Ketika model Komentar diperbarui, ini juga akan secara otomatis memperbarui atribut updated_at dari blog.


Ini adalah tujuh hal yang ingin saya bagikan kepada Anda untuk mendapatkan hasil maksimal dari model Anda. Jika tips ini membantu Anda dengan cara apa pun, pastikan untuk memeriksa postingan saya yang lain juga. Silakan tinggalkan komentar jika Anda memiliki umpan balik, pertanyaan, atau menginginkan saya untuk menulis tentang topik terkait Laravel lainnya. Terimakasih.