** Error: "Array to string conversion" **
I'm trying to save a JSON(string) with Eloquent into the database but I'm getting an error: "Array to string conversion"
I try to add in my model:
protected $casts = ['payload' => 'array'];
or
protected $casts = ['payload' => 'json'];
but is not working!
Controller
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();
}
Model
class B2cRepuveConsult extends Model
{
protected $table = ['b2c_repuve_consults'];
protected $fillable = ['search_enquiry_id','information'];
protected $casts = [
'information' => 'array',
];
}
Migration
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');
});
}
A raw query works but is not a good practice since I'm using Laravel
DB::insert('insert into b2c_repuve_consults (search_enquiry_id,payload) values (?, ?)', [$enquiryID, $data]);