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

时间:2017-10-27 08:35:56

标签: php laravel eloquent

我想通过API在我的数据库中创建一条新记录,但是我从Postman那里得到错误" message":#34;数组到字符串的转换(SQL:insert into ....)

API路线:

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

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

public function store(Request $request)
    {


        $post= new Post;
        $post->all = $request->all();

        $post->save();

    }

1 个答案:

答案 0 :(得分:4)

首先,检查您的post#all字段类型。如果是数据库字段 - 您只能设置相同类型的数据,例如对于字符串类型,您只能设置php字符串。

如果它不是归档但您想要将所有属性从请求设置为模型,则可以使用Model::create($request->all())来完成。

  

但是,在这样做之前,您需要指定一个可填写的   所有Eloquent模型都保护模型或模型上的保护属性   反对大规模分配。

Source - 群众作业

换句话说,可以在模型fillable中定义一个属性,该属性将是一个数组并包含可以批量分配的字段(以您的方式 - 来自请求的字段)。

最好使用$request->only()并仅提供您要从请求中取出的数据,这样可以减少用户错误导致您出现问题的可能性,因为$request->all()将包含任何问题输入数据,包括查询字符串。