You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何存储数组到数据库并查询还原原数组?

Laravel中数组存储与还原的最优方案

一、数组存入数据库的最优方式

用数据库的json类型字段(MySQL 5.7及以上版本支持),搭配Laravel模型的属性转换是最省心的方案:

  • 定义模型的$casts属性,指定字段自动在数组和JSON间转换:
    class Color extends Model
    {
        protected $casts = [
            'arraycolors' => 'array',
        ];
    }
    
  • 存储时直接给字段赋值数组,Laravel会自动帮你序列化为JSON存入数据库:
    $color = new Color();
    $color->arraycolors = [['green'], ['yellow', 'white']];
    $color->save();
    
  • 如果不用模型,直接用DB门面操作,需要手动把数组转成JSON字符串:
    DB::table('colors')->insert([
        'arraycolors' => json_encode([['green'], ['yellow', 'white']])
    ]);
    

二、查询还原原数组的方法

你现在用DB::table()->value()拿到的是JSON字符串,所以得转换成数组才能和原结构一致,这里有两种常用方法:

方法1:用模型自动转换(推荐)

如果用模型查询,$casts会自动把JSON字段转回数组,不用手动处理:

$color = Color::find(1);
$colors = $color->arraycolors; // 直接得到和原变量一致的嵌套数组

方法2:DB门面查询时手动反序列化

如果必须用DB门面,对查询结果用json_decode处理就行,记得传第二个参数true返回关联数组:

$colorsJson = DB::table('colors')
          ->where('id', 1)
          ->value('arraycolors');
$colors = json_decode($colorsJson, true); // 得到原结构的嵌套数组

内容的提问来源于stack exchange,提问作者Niek Neuvel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:21:29