微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Laravel 中的访问器方法转换数组中的 json 数据?

如何解决如何使用 Laravel 中的访问器方法转换数组中的 json 数据?

我是 Laravel 8 的新手。请对下面给出的代码提出任何建议或回答我的问题: 下面给出的是我的代码一个我真正想要得到的例子: 我的数据是:

[{"column_1_1":"value_1_1","column_1_2":"value_1_2"},{"column_2_1":"value_2_1","column_2_2":"value_2_2"}]

我想要

Array
(
    [0] => stdClass Object
        (
            [column_1_1] => value_1_1
            [column_1_2] => value_1_2
        )
    [1] => stdClass Object
        (
            [column_2_1] => value_2_1
            [column_2_2] => value_2_2
        )
)

解决方法

我正在添加这个答案,因为另一个只显示一种方式并且是最少使用的...我的是 Laravel 方式,您应该始终使用一种方式,并且您将一直看到最多的方式...

如果您有一个属性为 data 的模型,您不必通过执行 getDataAttribute 并使用 json_decode...

如果该属性/字段是您数据库中的 JSON/TEXT(因此存储 JSON),您只需cast 它。

class YourModel extends Model
{
    protected $casts = [
        'data' => 'array'
    ];
}

所以以后你可以这样做:

foreach ($model->data as $item) {
    ...
}

并在其中存储信息,例如:

$array = ['products' => [item1','item2'],'quantity' => 2];

$model->data = $array;

它会像{products: ["item1","item2"],quantity: 2}

一样保存在数据库中 ,

兄弟,您只需要在模型中添加访问器方法,例如:

猜猜你的数据库中有 xyz 列

public function getXyzAttribute($xyz)
{
    return json_decode($xyz);
}

它会直接返回数组。

希望它有效。 :)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。