За последние 24 часа нас посетили 21470 программистов и 1023 робота. Сейчас ищут 724 программиста ...

Column 'day_reports_id' cannot be null - хотя это внешний ключ

Тема в разделе "Laravel", создана пользователем Сереганек, 21 авг 2018.

  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Получаю ошибку:
    Код (Text):
    1. SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'day_reports_id' cannot be null (SQL: insert into `elementary_reports` (`type`, `project`, `subproject`, `report`, `time`, `day_reports_id`, `updated_at`, `created_at`) values (Рабочее время, Рабочее время, Рабочее время, Рабочее время, 5, , 2018-08-20 21:04:51, 2018-08-20 21:04:51))
    Суть ее ясна, но почему автоматически не подставляется нужный id из связанной таблицы ума не приложу..
    Миграции:
    Код (Text):
    1.         Schema::create('day_reports', function (Blueprint $table) {
    2.             $table->increments('id');
    3.             $table->text('username');
    4.             $table->timestamps();
    5.         });
    Код (Text):
    1. Schema::create('elementary_reports', function (Blueprint $table) {
    2.             $table->increments('id');
    3.             $table->integer('day_reports_id')->unsigned();
    4.             $table->foreign('day_reports_id')->references('id')->on('day_reports');
    5.             $table->text('type');
    6.             $table->text('project');
    7.             $table->text('subproject')->nullable();
    8.             $table->text('report');
    9.             $table->double('time');
    10.             $table->timestamps();
    11.         });
    Контроллер
    Код (Text):
    1.         $dayReport = new DayReport();
    2.         $dayReport -> username = Auth::user()->name;
    3.  
    4.         $dayReport->elementaryReports()->saveMany([
    5.             new ElementaryReport(['type' => 'Рабочее время', 'project' => 'Рабочее время', 'subproject' => 'Рабочее время', 'report' => 'Рабочее время', 'time' => 5]),
    6.             new ElementaryReport(['type' => 'Рабочее врем2', 'project' => 'Рабочее врем2', 'subproject' => 'Рабочее врем2', 'report' => 'Рабочее врем2', 'time' => 6]),
    7.         ]);
    Модель
    Код (Text):
    1. class DayReport extends Model
    2. {
    3.     public function elementaryReports()
    4.     {
    5.         return $this->hasMany('App\ElementaryReport', 'day_reports_id', 'id');
    6.     }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Я в таких случаях прохожусь отладчиком по коду фреймворка. Обычно потом находится, что у меня не так.