Laravel 将 'lat' 和 'lng' 键附加到关联数组

问题描述 投票:0回答:1

我在 MySQL 表中有一个 json 列,其中包含此示例的数据:

[
    [
        -79.4936969567481,
        37.3504643767627
    ],
    [
        -79.4936969567481,
        37.3504643767627
    ]
]

我有一个函数,我想分别在数组成员的第一个值和第二个值之前附加 'lat' => 和 'lng' => 键。到目前为止我已经:

$polygons = Polygon::get();
    
foreach ($polygons as $polygon) {
    $coordinates = $polygon->coordinates;
    
    // Transform the coordinates
    $newCoordinates = array_map(function ($coordinate) {
        return [
            'lat' => $coordinate[0],
            'lng' => $coordinate[1],
        ];
    }, $coordinates);
    
    // Update the model's coordinates column
    $polygon->coordinates = $newCoordinates;
    $polygon->save();
}

然而,它的结果是

[
    {
        "lat": -79.4936969567481,
        "lng": 37.3504643767627
    },
    {
        "lat": -79.4936789563065,
        "lng": 37.3504513771715
    }
]

我可能做错了什么? { 应替换为 [,} 替换为 ] 和 : 替换为 =>

arrays laravel
1个回答
0
投票

Mysql会将其保存为json(您描述的格式)。那里没有什么问题。但是,您可以向您的

Polygon
模型添加强制转换,以便它返回一个 php 数组给您。

class Polygon extends Model
{
    protected function casts()
    {
        return [
            'coordinates' => 'array'
        ];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.