I want to create a new record in my database through the API but i get the error "message": "Array to string conversion (SQL: insert into....) from Postman
API Route:
Route::post('/posts','PostController@store');
The store function in my controller:
public function store(Request $request)
{
$post= new Post;
$post->all = $request->all();
$post->save();
}
First, check your post#all
field type. If it a database field - you can set only data of the same type, for example for string type you can set only php string.
If it is not a filed but you want to set all attributes from request to model, you can do it with Model::create($request->all())
.
However, before doing so, you will need to specify either a fillable or guarded attribute on the model, as all Eloquent models protect against mass-assignment by default.
Source - Mass Assignment
In other words to may define a property in model fillable
which will be an array and contains fields that will be mass assignable (in your way - fields from request).
It might be better to use $request->only()
and provide only the data you want to take out of the request, which will reduce the possibility of user errors causing you a problem, as $request->all()
will include any input data, including the query string.