$data is my payload. Which I want to insert into the database. The attribute wanted to insert into database is name, email, password, post.
The Error Array to string conversion because of post attribute. The post attribute is an array. But the database never accepts array attributes inserted into the database.
Error Example
I am trying to insert this data into the database but the error exception says array to string conversion. Yes, definitely you can see here the post attribute is an array.
So the post attribute can not able to insert into database.
<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ use App\User; Route::get('/', function () { $data = [ 'name' => 'Haresh Chauhan', 'email' => 'haresh@gmail.com', 'password' => bcrypt('123456'), 'post' => [ 'title' => 'post title', 'body' => 'post body' ], ]; User::create($data); });
Possible Solutions
json_encode()
The first solution is, You can covert that array into JSON data. Using json_encode() function.
<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ use App\User; Route::get('/', function () { $data = [ 'name' => 'Haresh Chauhan', 'email' => 'haresh@gmail.com', 'password' => bcrypt('123456'), 'post' => json_encode([ 'title' => 'post title', 'body' => 'post body' ]), ]; User::create($data); });
Set Attribute In Model
In the model, you can set attribute json_encode().
You can see in the code panel two methods I have to define, One for setAttribute. which will convert the post attribute into JSON and. The second method is getAttribute, this will decode the data.
<?php namespace App; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password','post' ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function setPostAttribute($value) { return $this->attributes['post'] = json_encode($value); } public function getPostAttribute($value) { return json_decode($value); } }
Little Understanding
Whenever you try to access array data as a string that time this error will appear. Especially when you insert data into a database and convert array.
So you can not use an array as a string. Before use, you must need to convert it into serialized data or JSON format.
Thank you for reading our post.
We always thanks to you for reading our blogs.
Dharmesh Chauhan
(Swapinfoway Founder)Hello Sir, We are brothers origin from Gujarat India, Fullstack developers working together since 2016. We have lots of skills in web development in different technologies here I mention PHP, Laravel, Javascript, Vuejs, Ajax, API, Payment Gateway Integration, Database, HTML5, CSS3, and Server Administration. So you need our service Please Contact Us
Haresh Chauhan
(Co-Founder)We Are Also Recommending You :
- Laravel 6 validation with error message
- Laravel 6 call function undefined str_slug() - fix
- could not encode content to iso-8859-1
- Laravel Event Broadcast With Redis Socket.io Echo To Listen Real-Time Message
- Laravel 9 QR Code Generator Basic To Advanced Tutorial Example
- Arr::collapse() | Laravel Helper Function
- How To Generate A Sitemap In Laravel 6/7/8/9
- How to Send Email with Laravel 10
- Livewire File Upload Laravel
- Facade Laravel