Rumah > pembangunan bahagian belakang > tutorial php > Menyesuaikan Transformasi Data dengan Cast Laravel

Menyesuaikan Transformasi Data dengan Cast Laravel

百草
Lepaskan: 2025-03-06 02:31:09
asal
809 orang telah melayarinya

Customizing Data Transformations with Laravel Casts

Ciri Cast Custom Laravel membolehkan penukaran data yang disesuaikan, di luar keupayaan pemutus terbina dalam untuk mengendalikan jenis data yang kompleks dan logik perniagaan.

Berikut adalah contoh cara memformat nombor telefon menggunakan cast tersuai:

<?php namespace App\Casts;

use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;

class PhoneNumber implements CastsAttributes
{
    public function get(Model $model, string $key, mixed $value, array $attributes): string
    {
        return sprintf(
            "+%d (%d) %d-%d",
            ...explode('|', $value)
        );
    }

    public function set(Model $model, string $key, mixed $value, array $attributes): string
    {
        $value = preg_replace('/[^0-9]/', '', $value);
        return implode('|', [
            substr($value, 0, 1),
            substr($value, 1, 3),
            substr($value, 4, 3),
            substr($value, 7)
        ]);
    }
}
Salin selepas log masuk
Satu lagi contoh pemformatan alamat:

<?php namespace App\Casts;

use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;

class Address implements CastsAttributes
{
    public function get(Model $model, string $key, mixed $value, array $attributes): array
    {
        $data = json_decode($value, true);

        return [
            'street' => $data['street'],
            'city' => $data['city'],
            'state' => $data['state'],
            'postal_code' => $data['postal_code'],
            'formatted' => sprintf(
                '%s, %s, %s %s',
                $data['street'],
                $data['city'],
                $data['state'],
                $data['postal_code']
            )
        ];
    }

    public function set(Model $model, string $key, mixed $value, array $attributes): string
    {
        return json_encode([
            'street' => $value['street'],
            'city' => $value['city'],
            'state' => $value['state'],
            'postal_code' => $value['postal_code']
        ]);
    }
}
Salin selepas log masuk
Kemudian, dalam model anda, anda boleh menggunakannya seperti ini:

class User extends Model
{
    protected $casts = [
        'address' => Address::class,
        'phone' => PhoneNumber::class
    ];
}
Salin selepas log masuk
Pelakon tersuai menyediakan cara yang mudah dan boleh diguna semula untuk mengendalikan transformasi data yang kompleks sambil mengekalkan model yang mudah dan mudah dikekalkan.

Atas ialah kandungan terperinci Menyesuaikan Transformasi Data dengan Cast Laravel. 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