** Ошибка: «Преобразование массива в строку» **
Я пытаюсь сохранить JSON (строку) с Eloquent в базу данных, но
Я получаю сообщение об ошибке: "Преобразование массива в строку"
Я пытаюсь добавить в мою модель:
protected $casts = ['payload' => 'array'];
или
protected $casts = ['payload' => 'json'];
но не работает!
Контроллер
try{
if( $type == 'b2c'){
$searchEnquiry = B2CSearchEnquiry::find($enquiryID);
$data = $this->searchInDataSource($searchEnquiry);
$repuveConsult = new B2cRepuveConsult;
$repuveConsult->search_enquiry_id = $enquiryID;
$repuveConsult->payload = (string)$data;
$repuveConsult->saveOrFail();
}
}catch(\Exception $e){
return $e->getMessage();
}
Модель
class B2cRepuveConsult extends Model
{
protected $table = ['b2c_repuve_consults'];
protected $fillable = ['search_enquiry_id','information'];
protected $casts = [
'information' => 'array',
];
}
миграция
public function up()
{
Schema::create('b2c_repuve_consults', function (Blueprint $table) {
$table->increments('id');
$table->integer('search_enquiry_id')->unsigned();
$table->longText('payload')->nullable();
$table->timestamps();
});
Schema::table('b2c_repuve_consults', function($table) {
$table->foreign('search_enquiry_id')
->references('id')
->on('b2c_search_enquiries')
->onDelete('cascade');
});
}
Необработанный запрос работает, но не рекомендуется, поскольку я использую Laravel
DB::insert('insert into b2c_repuve_consults (search_enquiry_id,payload) values (?, ?)', [$enquiryID, $data]);