Laravel: вставка объекта массива в один столбец SQL - PullRequest
1 голос
/ 18 марта 2020

У меня есть один столбец в базе данных с именем сеанс, и я хочу вставить все данные ниже в один столбец в виде массива.

данные доступны в массиве

 array:1 [▼
0 => array:3 [▼
"_token" => "ENzbpMgvlOhMkwE1Fv13hjn9NlCOUolIFBDZ4wJd"
"session_start" => "2000-01-01"
"session_end" => "2002-01-01"
]
]

Я пробовал ниже

public function store(Request $request)
{
  $arr = (array($request->all()));

  $create = SchoolSession::create($arr));
}

при получении ошибки: Преобразование массива в строку

Пожалуйста, сообщите решение, а также укажите, как чтобы получить то же самое из БД и показать отдельно.

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Вы не можете вставить массив в поле базы данных без какой-либо сериализации, поэтому вы можете попробовать что-то вроде этого (но есть лучший способ, продолжить чтение):

public function store(Request $request)
{
    $json = json_encode($request->all());

    $create = SchoolSession::create(['session' => $json]);
}

Убедитесь, что ваш тип поля базы данных JSON/TEXT в зависимости от вашей mysql версии. При извлечении данных вам также необходимо decode it.

Из коробки Laravel предоставляет простой механизм для обработки этого. Таким образом, вам не нужно вручную encode/decode ваши данные. Eloquent позаботится о кодировании прежде, чем сохранить его в базе данных, а также декодирование будет выполнено автоматически. Прочитайте do c (ссылка приведена выше).

0 голосов
/ 18 марта 2020

Вы не можете напрямую добавить массив в столбец:

public function store(Request $request)
{
    $arr = $request->all();
    $arr = serialize($arr);
    $create = SchoolSession::create(['session'=>$arr]);
}

И получить то же самое из БД:

public function view(Request $request)
{

    $SchoolSession = SchoolSession::where('id','Specific ID ADD')->get();
    $SchoolSession = unserialize($SchoolSession[0]->session);
}
...