'QueryException Array to string string' в приложении Laravel - PullRequest
0 голосов
/ 28 октября 2018

Ошибка говорит «QueryException Массив в преобразование строки».

Найдите мой код ниже:

CreateProject.php

<label for="client_id">Select Client*</label>
<select name="client_name_array" id="">
  @foreach ($clientsArray as $option)
      <option value="{{$option}}">{{$option}}</option>
  @endforeach
</select>

контроллер:

$projects = new Project([
    'client_name' => $request->input('client_name_array'),
]);
$projects->save();
return redirect('/projects')->with('status', 'Project updated!');

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация по этому запросу.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вы можете попробовать функцию красноречивой модели Attribute Casting.В вашем Project классе добавьте

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

, поэтому данные массива будут автоматически преобразованы в строку при сохранении и в массив при получении.См. Laravel: Attribute Casting

Я добавил это к предыдущему ответу, но затем решил сделать свой собственный.

Также измените это:

<select name="client_name_array" id="">

до

<select name="client_name_array[]" id="">
0 голосов
/ 28 октября 2018

Я не уверен, но это может быть ответом.В CreateProject.php вы использовали

@foreach ($clientsArray as $option)
      <option value="{{$option}}">{{$option}}</option>
  @endforeach

Здесь $option также является массивом, который передается в качестве значения имени client_name_array.Когда вы отправляете форму, в контроллере $request->input('client_name_array') возвращает массив.Но переменная client_name, похоже, имеет строковый тип в базе данных.Таким образом, тип массива нельзя изменить на строковый.Надеюсь, вы поняли мою точку зрения.

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