はじめに
今回はLaravelでRequestを受け取ってfillしてsaveしようとした時にArray to string conversion〜
のエラー出てきたのでその解決方法の一つをまとめたいと思います。
Array to string conversion〜の解決方法
<?php
namespace App\Http\Controllers;
use Request;
use DB;
//-----(省略)-----
public function postEdit(Request $request)
{
$inputs = $request->validatedValues();
$user = User::findOrFail($inputs['id']);
$user = fill($inputs->toArray())->save();
return redirect("/users/{$user->id}/edit");
}
fillしてsaveしようと思った時にredirectの直前の実装でArray to string conversion〜
とエラーが出てきてしまいました。
あくまで1つの可能性ですが$requestの中身を確認した時にあるひとつの項目に対して複数選択が可能なjson型の項目があるとこのようなエラーになります。
そんな時はキャストを定義する必要があります。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* ネイティブなタイプへキャストする属性
*
* @var array
*/
protected $casts = [
'options' => 'array',
];
}
キャストを実装するとfillしてsaveできるようになるので参考にしてみてください。
最後に
いかがでしたでしょうか。
またエラーが出てきて詰まった際にはこのようにまとめていきたいと思います。