Как вернуть запись из текстового столбца как массив

254
25 октября 2021, 03:00

В бд есть поле типа longtext, в него записан массив такого типа

[[[73.159332,49.912499],[73.161736,49.91781],[73.166199,49.912278],[73.159332,49.912499]]]

Вопрос в том, как мне получить этот массив не в текстовом виде, а в виде массива
Вот так:

"geometry": {
      "id": 7,
      "coordinates": [[[73.159332,49.912499],[73.161736,49.91781],[73.166199,49.912278],[73.159332,49.912499]]],
      "id_zone": 1
    }  

А не как сейчас:

"geometry": {
      "id": 7,
      "coordinates": "[[[73.159332,49.912499],[73.161736,49.91781],[73.166199,49.912278],[73.159332,49.912499]]]",
      "id_zone": 1
    }
Answer 1

В вашу модель : App\User.php (или любую другую)

Необходимо дописать преобразователь - eloquent-mutators

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
  /**
    * Атрибуты, которые должны быть преобразованы к базовым типам.
    *
    * @var array
    */
  protected $casts = [
    'options' => 'array',
  ];
}

Из статьи на русском языке есть преобразователь $casts, который приведет ваш атрибут к нужному типу.

В вашем случае

protected $casts = [
  'coordinates' => 'array',
];
READ ALSO
Ошибка в MySQL Workbench с RowCount

Ошибка в MySQL Workbench с RowCount

Значение 0 недопустимо для RowCountRowCount должен быть больше или равен 1

256
Php не видит расширение

Php не видит расширение

Пытаюсь подключиться к базе Postgres, у меня стоит Apache 24, Php 5

357
Пробел после каждой тысячи php

Пробел после каждой тысячи php

В переменной хранится некое значение количества аудиторииОтображается в формате: "Аудитория: 81345" (например)

235
Связка PHP и Bootstrap

Связка PHP и Bootstrap

Я вывожу по 10 результатов с запроса на страницу, и каждую отдельную статью заворачиваю в class col-lg-6 а все 10 записей заворачиваю в class rowВ итоге...

138