Rumah > pembangunan bahagian belakang > tutorial php > Penyesuaian Koleksi di Laravel Menggunakan Dikumpulkan

Penyesuaian Koleksi di Laravel Menggunakan Dikumpulkan

Emily Anne Brown
Lepaskan: 2025-03-06 02:17:09
asal
475 orang telah melayarinya

Collection Customization in Laravel Using CollectedBy

Meningkatkan fungsi koleksi fasih dengan atribut ; CollectedBy menyediakan penyelesaian deklaratif di peringkat kelas. newCollection() CollectedBy Sebelum ini, koleksi model jahitan yang melibatkan kaedah . Kaedah berasaskan atribut baru ini menawarkan penyelesaian peringkat kelas yang unggul.

newCollection()

Pertimbangkan katalog produk e-dagang:
use Illuminate\Database\Eloquent\Attributes\CollectedBy;

#[CollectedBy(CustomCollection::class)]
class YourModel extends Model
{
    // Model implementation
}
Salin selepas log masuk

atribut
// Product Collection
<?php namespace App\Collections;

use Illuminate\Database\Eloquent\Collection;

class ProductCollection extends Collection
{
    public function inStock()
    {
        return $this->filter(fn($product) => $product->stock_count > 0);
    }

    public function onSale()
    {
        return $this->filter(fn($product) => $product->discount_percentage > 0);
    }

    public function byPriceRange($min, $max)
    {
        return $this->filter(function($product) use ($min, $max) {
            $price = $product->getEffectivePrice();
            return $price >= $min && $price <= $max;
        });
    }

    public function topRated()
    {
        return $this->filter(fn($product) => $product->average_rating >= 4)
            ->sortByDesc('average_rating');
    }
}

//Product model
namespace App\Models;

use App\Collections\ProductCollection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Attributes\CollectedBy;

#[CollectedBy(ProductCollection::class)]
class Product extends Model
{
    public function getEffectivePrice()
    {
        return $this->discount_percentage > 0 ? $this->price * (1 - $this->discount_percentage / 100) : $this->price;
    }
}
Salin selepas log masuk
memudahkan penyesuaian koleksi, menghasilkan aplikasi Laravel yang lebih bersih, lebih mudah dibaca.

Atas ialah kandungan terperinci Penyesuaian Koleksi di Laravel Menggunakan Dikumpulkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan