Laravel应用程序中的'QueryException Array to string conversion'

时间:2018-10-28 10:27:39

标签: php laravel laravel-5

错误显示“ 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 :(得分:0)

我不确定,但这可能是答案。 在CreateProject.php中,您已使用

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

这里$option也是一个数组,将其作为值传递给名称client_name_array。  提交表单时,在控制器上,$request->input('client_name_array')返回一个数组。但是,变量client_name在数据库中似乎是字符串类型。不能通过这种方式将数组类型更改为字符串类型。希望你明白我的意思。

答案 1 :(得分:0)

您可以尝试Attribute Casting雄辩的模型功能。 在您的Project类中添加

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

因此,数组数据将在保存时自动转换为字符串,并在检索时自动转换为数组。 参见Laravel: Attribute Casting

我已将此添加到先前的答案中,但随后决定自己制作。

还要更改此内容:

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

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