Illuminate\Database\QueryException:SQLSTATE:一般错误:1364
P粉011684326
P粉011684326 2024-04-03 22:39:00
0
1
368

为什么我无法输入数据?

在约会表中,你不想输入userid属性,它有很好的相关性,有人帮助我

照亮\数据库\QueryException:SQLSTATE [HY000]:一般错误:1364字段'idusuario'没有默认值(连接:mysql,SQL:插入citasidpacienteidtrabajadorfecha_horaobservaciones, precio_tratamiento, precio_totalestadopagoupdated_atcreated_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');
    }
};

我不明白为什么它不起作用

P粉011684326
P粉011684326

全部回复(1)
P粉478445671

我认为问题出在创建行中。

而不是 $cita = Cita::create($request->all($dataCita)); 只需编写 $cita = Cita::create($dataCita);

因为您已经使用 $request 中的参数准备了 $dataCita

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!