繁体   English   中英

Laravel:如何在数据库中存储json格式数据?

[英]Laravel : How to store json format data in database?

我想在给定数组的数据库中存储一些json格式数据。 但我如何使用控制器存储它。

假设我有json数据,如:

{"id":"bangladesh","divisions":[{"name":"Barisal"},{"name":"Chittagong"},{"name":"Dhaka"},{"name":"Khulna"},{"name":"Rajshahi"},{"name":"Rangpur"},{"name":"Sylhet"}]}

据我所知,在控制器中使用json格式是这样的,因为我还没有完全清楚它。

public function saveUser(Request $request)
        {
            $div=new Div();
                       $user->json = json_encode( array({"Date 1": {
                 {"id":"bangladesh","divisions":[{"name":"Barisal"},{"name":"Chittagong"},{"name":"Dhaka"},{"name":"Khulna"},{"name":"Rajshahi"},{"name":"Rangpur"},{"name":"Sylhet"}]}   
            $div->save();

            return redirect('getList');
        }

如何使用Laravel Controller将它保存在mySQL中仅使用分区模型中的分区列表?

您不需要自己将数组数据转换为JSON字符串,在模型上使用Laravel $ casts参数: https ://laravel.com/docs/5.2/eloquent-mutators#attribute-casting

您应该在Div模型中执行以下操作:

protected $casts = [
    'divisions' => 'array',
];

您可以将Model转换为JSON格式,如$model->toJson();

要么

如果数组中有数据,可以使用json_encode(['id' => 1, 'name' => 'User 1']);

Laravel Schema支持JSON字段类型以及https://laravel.com/docs/5.0/schema#adding-columns

您也可以使用text字段类型来存储JSON数据。

设置你的模型

protected $casts = [
        'list' => 'array'
    ];

这是完整的代码。

/**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'primary_id', 
        'list'
    ];


    protected $casts = [
        'list' => 'array'
    ];

    public function setMetaAttribute($value)
    {
        $list = [];

        foreach ($value as $array_item) {
            if (!is_null($array_item['key'])) {
                $list[] = $array_item;
            }
        }

        $this->attributes['list'] = json_encode($list);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM