2017-12-29 69 views
1

私のpostgresデータベースのjsonデータフィールドにオプション付き配列を保存しようとしています。私はLaravel 5.5で作業しています。翻訳には "dimsav/laravel-translatable"という拡張子を使用しています。Laravelは、配列をJsonデータベースフィールドに格納しているときに "Array to string conversion"を取得しています

私のモデルの質問は次のようになります。 名前空間App。

use Illuminate\Database\Eloquent\Model; 
use Dimsav\Translatable\Translatable; 

class Question extends Model 
{ 
    use Translatable; 
    public $translatedAttributes = ['options', 'answer']; 

    protected $casts = [ 
     'options' => 'array' 
    ]; 
} 

モデルQuestionTranslationは次のようになります。

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class QuestionTranslation extends Model 
{ 

public $timestamps = false; 
public $fillable = ['options', 'answer']; 

}

そしてQuestionsControllerにおける店舗アクション:

public function store(Request $request) 
{ 
    $question = new Question(); 

    $options[1] = "test1"; 
    $options[2] = "test2"; 

    $question->answer = 1; 
    $question->options = $options; 

    $question->save(); 

} 

私は私が手にそのデータを格納しようエラー:

Illuminate \ Database \ QueryException 
Array to string conversion (SQL: insert into "question_translations" ("locale", "answer", "options", "question_id") values (en, 1, test1, 18) returning "id") 

私はjson_encodeを使って$ optionsを自分でキャストできますが、問題なく保存できます。

ラーベルキャスティングが機能しない理由は何ですか?たぶん、翻訳可能な拡張機能のためでしょうか?

+0

に動作します私はここに助けてしまった: https://laracasts.com/discuss/channels/laravel/laravel-getting-an配列から配列への変換中の配列から文字列への変換 – JayEJay

答えて

関連する問題