屬性類型轉(zhuǎn)換

2018-02-24 15:52 更新

如果您想要某些屬性始終轉(zhuǎn)換成另一個(gè)數(shù)據(jù)類型, 您可以在模型中增加 casts 屬性。否則,您需要為每個(gè)屬性定義修改器,這樣會(huì)增加更多的時(shí)間開銷。這里有一個(gè)使用 casts 屬性的例子:

/**
 * 需要被轉(zhuǎn)換成基本類型的屬性值。
 *
 * @var array
 */
protected $casts = [
    'is_admin' => 'boolean',
];

現(xiàn)在當(dāng)你獲取 is_admin 屬性時(shí)始終會(huì)是布爾類型,甚至在數(shù)據(jù)庫中存儲(chǔ)的這個(gè)值是一個(gè)整型也會(huì)被轉(zhuǎn)換。其他支持的類型轉(zhuǎn)換值有: integer, real, float, double, string, boolean, object 和 array 。

如果您存儲(chǔ)的值是一個(gè)序列化的 JSON 時(shí),那么 array 類型轉(zhuǎn)換將會(huì)非常有用。比如,您的數(shù)據(jù)表里有一個(gè) TEXT 類型的字段存儲(chǔ)著序列化后的 JSON 數(shù)據(jù), 通過增加 array 類型轉(zhuǎn)換, 當(dāng)獲取這個(gè)屬性的時(shí)候會(huì)自動(dòng)反序列化成 PHP 的數(shù)組:

/**
 * 需要被轉(zhuǎn)換成基本類型的屬性值。
 *
 * @var array
 */
protected $casts = [
    'options' => 'array',
];

現(xiàn)在,當(dāng)你使用 Eloquent 模型時(shí):

$user = User::find(1);
// $options 是一個(gè)數(shù)組...
$options = $user->options;
// options 會(huì)自動(dòng)序列化成 JSON...
$user->options = ['foo' => 'bar'];
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)