Rumah >pembangunan bahagian belakang >tutorial php >Menyesuaikan Transformasi Data dengan Cast Laravel
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) ]); } }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'] ]); } }Kemudian, dalam model anda, anda boleh menggunakannya seperti ini:
class User extends Model { protected $casts = [ 'address' => Address::class, 'phone' => PhoneNumber::class ]; }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!