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

How to convert an json data in array using accessor method in Laravel?

我是 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
        )
)

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

猜猜你的数据库中有 xyz 列

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

直接return数组。

希望有用。 :)

我添加这个答案是因为另一个只显示一种方式,而且是最少使用的...我的是 Laravel 方式,你应该经常使用的方式,也是你将要看到的最多的方式一直...

如果您有一个 属性 的模型,例如 data,您不必通过执行 getDataAttribute 和使用 [=15] 来覆盖它的读取方式=]...

如果 property/field 在你的数据库中是一个 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}

一样保存在数据库中