Laravel Хранение нескольких значений Json Формат - PullRequest
2 голосов
/ 02 апреля 2020

Я пытаюсь выбросить SQL информацию в формате JSON из формы. Я сохранил информацию в области SQL, но она сохраняется в виде SQL escape. Когда я снимаю по API, я не могу использовать его так, как хочу. Коды следующие. Интересно, где я делаю ошибки, но я не смог найти решение.

Миграция для рабочих столбец

$table->text('workers')->nullable();

Модель Я написал, что рабочий столбец в таблица имеет формат массива

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

блейд или представление Необходимо сохранить несколько данных, таких как имя, идентификатор

<select class="js-example-basic-multiple searchselect form-control show-tick" name="workers[]" multiple="multiple">
     @foreach ($personels as $personel)
<option value='{"spid":{{ $personel->id }},"spsicil":{{ $personel->sicil_no }},"spname":"{{ $personel->name }}"}'>{{ $personel->name }}</option>
     @endforeach
</select>

Файл контроллера

 $workers = implode(',', $request->workers);
 $new = "[".$workers."]";
        $data = new Zimmet();
        $data->name = $request->name;
        $data->sicil_no = $request->sicil_no;
        $data->proje_id = $request->proje_id;
        $data->workers = $new;
        $data->save();

Я привык преобразовывать входящие данные в формат массива, но я не уверен в правильности.

Это записывает столбец рабочих в таблицу следующим образом.

"[
{\"spid\":1,\"spsicil\":35678909,\"spname\":\"Mike\"},
{\"spid\":5,\"spsicil\":3,\"spname\":\"Jhon\"},
{\"spid\":4,\"spsicil\":44,\"spname\":\"Erica\"}
]"

Множественное значение Как правильно добавить базу данных в массив или в формате json.

Спасибо за совет и помощь

1 Ответ

1 голос
/ 02 апреля 2020

Проблема здесь в том, что строка JSONified дважды.

Я бы посоветовал вам удалить следующие строки из вашего кода

$workers = implode(',', $request->workers);
$new = "[".$workers."]";

Обновленный код должен быть:

    $data = new Zimmet();
    $data->name = $request->name;
    $data->sicil_no = $request->sicil_no;
    $data->proje_id = $request->proje_id;
    $data->workers = $request->workers;
    $data->save();

Объяснение:

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

Обеспечивает сериализацию и десериализацию массива до JSON при сохранении в базе данных и извлечении из базы данных.

Надеюсь, это поможет Вы.

Лучший.

Ссылка: https://laravel.com/docs/7.x/eloquent-mutators#array -и- json -кастинг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...