属性类型转换

最后更新于:2022-04-01 15:12:18

如果您想要某些属性始终转换成另一个数据类型, 您可以在模型中增加 casts 属性。否则,您需要为每个属性定义修改器,这样会增加更多的时间开销。这里有一个使用 casts 属性的例子: ~~~ /** * 需要被转换成基本类型的属性值。 * * @var array */ protected $casts = [ 'is_admin' => 'boolean', ]; ~~~ 现在当你获取 is_admin 属性时始终会是布尔类型,甚至在数据库中存储的这个值是一个整型也会被转换。其他支持的类型转换值有: integer, real, float, double, string, boolean, object 和 array 。 如果您存储的值是一个序列化的 JSON 时,那么 array 类型转换将会非常有用。比如,您的数据表里有一个 TEXT 类型的字段存储着序列化后的 JSON 数据, 通过增加 array 类型转换, 当获取这个属性的时候会自动反序列化成 PHP 的数组: ~~~ /** * 需要被转换成基本类型的属性值。 * * @var array */ protected $casts = [ 'options' => 'array', ]; ~~~ 现在,当你使用 Eloquent 模型时: ~~~ $user = User::find(1); // $options 是一个数组... $options = $user->options; // options 会自动序列化成 JSON... $user->options = ['foo' => 'bar']; ~~~
';