LoginSignup
5
4

More than 3 years have passed since last update.

【Laravel】Array to string conversion〜の解決方法

Posted at

はじめに

今回は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',
    ];
}

引用:Eloquent:ミューテタ 8.x Laravel

キャストを実装するとfillしてsaveできるようになるので参考にしてみてください。

最後に

いかがでしたでしょうか。
またエラーが出てきて詰まった際にはこのようにまとめていきたいと思います。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4