当我们有时候需要存储一个数据集,比如 商品的产品图,一个商品需要N个图片去对应,我们有2种方法处理,1-图片设为新的数据表,和商品为1对多关系, 2-把所有图片作为1个字段去存储在商品表
本着少一个表少点麻烦的原则,我比较倾向于第二种
但是这就意味着商品的图片每次存储要从array变成string ,每次获取需要从string变成array
伟大的laravel当然不会让你做这么操蛋的事情
laravel ORM的数据 属性转化 可以完美的解决这个问题,下面的数据来自laravel学院
array 类型转换在处理被存储为序列化 JSON 格式的字段时特别有用,例如,如果数据库有一个 JSON 或 TEXT 字段类型包含了序列化 JSON,添加 array 类型转换到该属性将会在 Eloquent 模型中访问其值时自动将其反序列化为 PHP 数组:
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* 应该被转化为原生类型的属性
*
* @var array
*/
protected $casts = [
'options' => 'array',
];
}
当然属性转化,并不仅仅能进行array和json的转化,还能进行int - boolean 、时间格式 等转化