Warum kann ich keine Daten eingeben?
In der Termintabelle möchten Sie das Attribut userid nicht eingeben, es hat eine gute Korrelation, jemand hilft mir
Illuminate Database QueryException: SQLSTATE [HY000]: Allgemeiner Fehler: 1364 Feld „idusuario“ hat keinen Standardwert (Verbindung: MySQL, SQL: Einfügen
citas(idpaciente,idtrabajador,fecha_hora,observaciones,precio_tratamiento,precio_total、estadopago、updated_at、created_at) Wert (1, 1, 2023-08-01 17:26:08, ? , 0, 0, 0, 2023-08-30 15:19:42, 2023-08-30 15:19:42)) In Datei C:larragonwwwapipodovendorlaravelframeworksrcIlluminateDatabaseConnection.php Zeile 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');
}
};
Ich verstehe nicht, warum es nicht funktioniert
我认为问题出在创建行中。
而不是
$cita = Cita::create($request->all($dataCita));只需编写$cita = Cita::create($dataCita);因为您已经使用
$request中的参数准备了$dataCita。