Illuminate\Database\QueryException:SQLSTATE:一般錯誤:1364
P粉011684326
P粉011684326 2024-04-03 22:39:00
0
1
457

為什麼我無法輸入資料?

在約會表中,你不想輸入userid屬性,它有很好的相關性,有人幫我

照亮\資料庫\QueryException:SQLSTATE [HY000]:一般錯誤:1364欄位'idusuario'沒有預設值(連接:mysql,SQL:插入##citasidpacienteidtrabajadorfecha_horaobservaciones, precio_tratamiento, precio_totalestadopago #updated_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學習者快速成長!