laravel красноречиво не сохраняет все параметры модели в таблице - PullRequest
0 голосов
/ 25 января 2020

Модель:

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);
}

Ошибка:

Подсветка \ База данных \ QueryException SQLSTATE [HY000]: общая ошибка: 1364 Поле 'fecha' не имеет значения по умолчанию (SQL: вставить в citas_odontologicas (updated_at, created_at) значения (2020-01-25 20: 01:22, 2020-01-25 20:01:22))

1 Ответ

1 голос
/ 25 января 2020

Laravel Модель предоставляет API-интерфейс c для создания объектов. Если вы хотите использовать нотацию 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
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...