php - laravel eloquent 没有将所有模型参数保存在表中
问题描述
模型:
protected $table = 'citas_odontologicas';
protected $fillable = ['fecha','hora', 'procedimiento_id', 'paciente_id'];
移民:
public function up()
{
Schema::create('citas_odontologicas', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->string('fecha');
$table->string('hora');
$table->bigInteger('procedimiento_id')->unsigned();
$table->foreign('procedimiento_id')->references('id')->on('procedimientos');
$table->bigInteger('paciente_id')->unsigned();
$table->foreign('paciente_id')->references('id')->on('pacientes');
});
}
控制器:
public function agendarCita($fecha, $hora, $procedimiento, $paciente)
{
$citaOdontologica = new CitaOdontologica($fecha, $hora, $procedimiento, $paciente);
$citaOdontologica->save();
dd($citaOdontologica);
}
错误:
Illuminate\Database\QueryException SQLSTATE[HY000]: General error: 1364 Field 'fecha' doesn't have a default value (SQL: insert into
citas_odontologicas
(updated_at
,created_at
) values (2020-01-25 20:01:22, 2020-01- 25 20:01:22))
解决方案
Laravel Model 提供静态 API 来创建对象。如果要使用new ClassName()
符号,则必须覆盖模型构造函数。记住_id
关系字段的后缀(如果您没有更改它)。
但我建议使用Model::create()
和Model::make()
方法,如下所示:
$citaOdontologica = CitaOdontologica::make([
'fecha' => $fecha,
'hora' => $hora,
'procedimiento_id' => $procedimiento,
'paciente_id' => $paciente
]);
$citaOdontologica->save();
甚至更简单:
$citaOdontologica = CitaOdontologica::create([
'fecha' => $fecha,
'hora' => $hora,
'procedimiento_id' => $procedimiento,
'paciente_id' => $paciente
]);
推荐阅读
- docker - 当laravel连接时,mac os上的mysql docker在caching_sha2上“崩溃”
- javascript - AngularJS:如何修改 document.onload 中的服务?
- html - 尝试使用 Grid 或 Flexbox 获得具有分数间距的相等列
- airflow - AirflowException: Celery 命令失败 - 记录的主机名与此实例的主机名不匹配
- slack - Slack api:files.upload 到用户频道并显示为机器人用户?
- vmware-clarity - Clarity ClrFormsNextModule *clrIfError 反应式表单
- php - 生产服务器上使用 CakePHP3 的“请求数据中找不到'_Token'”
- apache-flink - 跨任务管理器平均分配一个 Flink 算子
- mysql - 如何在函数中使用 COUNT 结果而不返回它?
- android - 应用程序从文件夹加载错误的布局