laravel - 无法在 Laravel 中发送 post 请求
问题描述
我正在尝试发送一个发布请求,它给了我这个错误。我认为错误是由控制器中的某些东西引起的,但我不知道它是什么。我已经提供了所有相关的代码。谁能帮我修复错误?
SQLSTATE [23000]:完整性约束违规:1048 列“first_name”不能为空(SQL:插入
users
(first_name
、、、、、、、、 )值(?last_name
, ?phone_number
,?,?,password
2020-02-26updated_at
07:54created_at
:56, 2020-02-26 07:54:56))
控制器:
public function store(Request $request)
{
$user = new User();
$user->first_name = $request->first_name;
$user->last_name = $request->last_name;
$user->email = $request->email;
$user->phone_number = $request->phone_number;
$user->password = $request->password;
$user->save();
return new UserResource($user);
}
模型:
class User extends Model
{
protected $guarded = [];
}
用户资源:
public function toArray($request)
{
// return parent::toArray($request);
return [
'id' => $this->id,
'first_name' => $this->first_name,
'last_name' => $this->last_name,
'email' => $this->email,
'phone_number' => $this->phone_number,
'password' => $this->password
];
}
}
移民:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('first_name');
$table->string('last_name');
$table->string('email');
$table->string('phone_number');
$table->string('password');
$table->timestamps();
});
}
请求正文:
{
'first_name': 'ayman',
'last_name': 'tarig',
'email': 'ayman@email.com',
'phone_number': '010010100',
'password': '1234'
}
解决方案
首先,我认为您可以使用Eloquent ORM 中的Mass Assignment ,
来自 Laravel Eloquent ORM 文档
您也可以使用 create 方法将新模型保存在一行中。插入的模型实例将从该方法返回给您。但是,在这样做之前,您需要在模型上指定一个可填充或受保护的属性,因为所有 Eloquent 模型都默认防止批量赋值。
为了更新您的字段,您需要使用fillable
Eloquent 模型的数组:
class User extends Model
{
protected $guarded = [];
protected $fillable = [
'id',
'first_name',
'last_name',
'email',
'phone_number',
'password',
];
}
您希望使用自定义请求来验证提供的数据格式是否正确且不为空:laravel.com/docs/master/validation#form-request-validation
对于更复杂的验证场景,您可能希望创建一个“表单请求”。表单请求是包含验证逻辑的自定义请求类。
如下:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email',
'phone_number' => 'required',
'password' => 'required'
];
}
推荐阅读
- spring-boot - 未找到 Spring Boot 执行器运行状况检查
- pandas - Pyspark Dataframe udf 依赖于先前的索引值
- mysql - 不在分组日期中的 SQL 连接
- node.js - Google Photos API - 有没有办法提取评论
- python - 获取表格单元格的内容而不删除里面的标签
- sql-server - Opentext 内容服务器无法创建/连接到数据库
- r - 将列转置为数据帧列表中的行并将其写入 R 中的新数据帧
- python - 使用 Python 将包含逗号的抓取字符串转换为整数
- python - 使用缺少键值对更新嵌套字典
- jquery - Asp.Net Core 5.0 在局部视图中使用 jQuery