Laravel 8 Castables

2021-07-19 11:45 更新

除了將自定義類型轉(zhuǎn)換附加到模型之外,您還可以附加一個實(shí)現(xiàn) Illuminate\Contracts\Database\Eloquent\Castable 接口的類:

protected $casts = [
    'address' => \App\Models\Address::class,
]; 

實(shí)現(xiàn) Castable 接口的對象必須定義一個 castUsing 方法,該方法返回負(fù)責(zé)在 Castable 類之間進(jìn)行轉(zhuǎn)換的自定義 Caster 類的類名:

<?php

namespace App\Models;

use Illuminate\Contracts\Database\Eloquent\Castable;
use App\Casts\Address as AddressCast;

class Address implements Castable
{
    /**
     * 獲取強(qiáng)制轉(zhuǎn)換目標(biāo)時要使用的強(qiáng)制轉(zhuǎn)換類的名稱
     *
     * @param  array  $arguments
     * @return string
     */
    public static function castUsing(array $arguments)
    {
        return AddressCast::class;
    }
} 

當(dāng)使用 Castable 類時,您仍可以在 $casts 中定義參數(shù)。 參數(shù)將直接傳遞到 Caster 類:

protected $casts = [
    'address' => \App\Models\Address::class.':argument',
]; 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號