Laravel - 通过API在数据库中存储新记录

Laravel  - 通过API在数据库中存储新记录

问题描述:

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();

    }

我想通过API在我的数据库中创建一条新记录,但是我收到错误“message”:“Array” 来自Postman的字符串转换(SQL:insert into ....) p>

API路由: p>

  Route :: post('/  posts','PostController @ store'); 
  code>  pre> 
 
 

我的控制器中的商店功能: p>

 公共功能 store(请求$ request)
 {
 
 
 $ post = new Post; 
 $ post-> all = $ request-> all(); 
 
 $ post-> save(  ); 
 
} 
  code>  pre> 
  div>

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.