laravel针对数据集的数据库处理

当我们有时候需要存储一个数据集,比如 商品的产品图,一个商品需要N个

Posted by 昆山吴彦祖 on 2019.02.14

当我们有时候需要存储一个数据集,比如 商品的产品图,一个商品需要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 、时间格式 等转化