为什么我无法输入数据?
在约会表中,你不想输入userid属性,它有很好的相关性,有人帮助我
照亮\数据库\QueryException:SQLSTATE [HY000]:一般错误:1364字段'idusuario'没有默认值(连接:mysql,SQL:插入
citas(idpaciente,idtrabajador,fecha_hora,observaciones,precio_tratamiento,precio_total、estadopago、updated_at、created_at) 值 (1, 1, 2023-08-01 17:26:08, ?, 0, 0, 0, 2023-08-30 15 :19:42, 2023-08-30 15 :19:42)) 在文件 C:\larragon\www\apipodo\vendor\laravel\framework\src\Illuminate\Database\Connection.php 第 795 行
public function store(Request $request)
{
// --------------------------------------------------------------------
// "fecha_hora": "2023-08-01 17:26:08", // Reqerido
// "idtrabajador": 1, // Requerido
// "idusuario": 1, // Requerido
// "idpaciente" : 1 // Requerido
// "precio_tratamiento" : 0, // Nullable
// "observaciones" : "", // Nullable
// "precio_total" : 0, // Nullable
// "estadopago" : 0, // Nullable
// "diagnostico" : '', // Nullable
// "tratamiento" : '', // Nullable
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// ----------------------------------------------------------------
$validator = \Validator::make($request->input(), $this->getRulesInput(), $this->getMessagesErrors());
if ($validator->fails()) {
return response()->json([
'status' => false,
'message' => 'Error en la validación',
'errors' => $validator->errors()->all()
], 400);
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// Insertar el id del usuario usando el token
$idusuario = 1;
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// Insertar datos en la tabla cita
$dataCita = [
'fecha_hora' => $request->input('fecha_hora'),
'precio_tratamiento' => $request->input('precio_tratamiento'),
'observaciones' => $request->input('observaciones'),
'precio_total' => $request->input('precio_total'),
'estadopago' => $request->input('estadopago'),
'idtrabajador' => $request->input('idtrabajador'),
'idpaciente' => $request->input('idpaciente'),
'idusuario' => 1,
];
$cita = Cita::create($request->all($dataCita));
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// Insertar datos en la tabla detalle cita
// --- Condicion: si no esta vacio el campo diagnostico o tratamiento
// --- Validar si el diagnostico y el tratamiento ya existen,
// --- si es que no existen hay que crearlos
$dataDetalleCita = [];
if (!$request->input('diagnostico')) {
$diagnostico = Diagnostico::where('diagnostico', '=', $request->input('diagnostico'));
if (!$diagnostico) $diagnostico = Diagnostico::create(['diagnostico' => $request->input('diagnostico')]);
$dataDetalleCita['iddiagnostico'] = $diagnostico['iddiagnostico'];
}
if (!$request->input('tratamiento')) {
$tratamiento = Tratamiento::where('tratamiento', '=', $request->input('tratamiento'));
if (!$tratamiento) $tratamiento = Tratamiento::create(['tratamiento' => $request->input('tratamiento')]);
$dataDetalleCita['idtratamiento'] = $tratamiento['idtratamiento'];
}
if ($dataDetalleCita) {
$dataDetalleCita['idcita'] = $cita['idcita'];
Detalle_cita::create($dataDetalleCita);
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
return response()->json([
'status' => true,
'message' => 'Cita creada exitosamente',
'data' => $cita
], 201);
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Cita extends Model
{
use HasFactory;
protected $table = 'citas';
protected $primaryKey = 'idcita';
protected $fillable = [
'fecha_hora', 'precio_tratamiento', 'observaciones',
'precio_total', 'estadopago', 'idtrabajador', 'idpaciente', 'idusuario',
];
public function trabajador()
{
return $this->belongsTo(Trabajador::class, 'idtrabajador');
}
public function paciente()
{
return $this->belongsTo(Paciente::class, 'idpaciente', 'idPaciente');
}
public function usuario()
{
return $this->belongsTo(User::class, 'idusuario', 'id');
}
public function detalleCita()
{
return $this->hasMany(Detalle_cita::class, 'idcita');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('citas', function (Blueprint $table) {
$table->bigIncrements('idcita');
$table->timestamp('fecha_hora');
$table->decimal('precio_tratamiento', 10, 2)->default(0);
$table->string('observaciones', 255)->nullable();
$table->decimal('precio_total', 10, 2)->default(0);
$table->tinyInteger('estadopago')->nullable()->default(0);
$table->unsignedBigInteger('idtrabajador');
$table->unsignedBigInteger('idpaciente');
$table->unsignedBigInteger('idusuario');
$table->timestamps();
$table->index('idtrabajador');
$table->index('idpaciente');
$table->index('idusuario');
$table->foreign('idtrabajador')
->references('idtrabajador')
->on('trabajador')
->onDelete('NO ACTION')
->onUpdate('NO ACTION');
$table->foreign('idpaciente')
->references('idPaciente')
->on('pacientes')
->onDelete('NO ACTION')
->onUpdate('NO ACTION');
$table->foreign('idusuario')
->references('id')
->on('users')
->onDelete('NO ACTION')
->onUpdate('NO ACTION');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('citas');
}
};
我不明白为什么它不起作用
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我认为问题出在创建行中。
而不是
$cita = Cita::create($request->all($dataCita));只需编写$cita = Cita::create($dataCita);因为您已经使用
$request中的参数准备了$dataCita。