SQLSTATE [HY000]: общая ошибка: 1364 Поле 'album_id' не имеет значения по умолчанию - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу связать несколько изображений с несколькими альбомами.Я получил следующую ошибку:

SQLSTATE [HY000]: Общая ошибка: 1364 Поле 'album_id' не имеет значения по умолчанию

Я не хочуиметь значение по умолчанию для моего album_id.

Моя таблица фотографий:

public function up()
{
    Schema::create('fotos', function (Blueprint $table) {
        $table->increments('id');
        $table->string('foto');
        $table->timestamps();
        $table->integer('album_id');
    });
}

Моя таблица альбомов:

public function up()
{
    Schema::create('albums', function (Blueprint $table) {
        $table->increments('id');
        $table->string('foto');
        $table->string('naam');
        $table->timestamps();
    });
}

Моя сводная таблица:

public function up()
{
    Schema::create('album_foto', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
        $table->integer('album_id');
        $table->integer('foto_id');
    });
}

Сеялка настольных моих альбомов:

<?php

use Illuminate\Database\Seeder;

use App\Album;

class AlbumsTableSeeder extends Seeder {

Первый альбом

public function run() {

  $album = new Album([

        'foto' => 'Vlinder.jpg',
        'naam' => 'Black & White'
    ]);
    $album->save();

Второй альбом

  $album = new Album([

        'foto' => 'Waterval2.jpg',
        'naam' => 'Mother Nature'
    ]);
    $album->save();
 }
}

Сеялка настольных моих фотографий:

<?php

use Illuminate\Database\Seeder;

use App\Foto;

class FotosTableSeeder extends Seeder {

Изображения первого альбома

 public function run() {

  $foto = new Foto([
            'foto' => 'Vlinder.jpg'
        ],
        [
            'foto' => 'Berlijn.jpg'
        ],
        [
            'foto' => 'Mist.jpg'
        ],
        [
            'foto' => 'Mystery_Guy.JPG'
        ],
        [
            'foto' => 'Pop.JPG'
        ],
        [
            'foto' => 'Pop2.JPG'
        ],
        [
            'foto' => 'Pop3.JPG'
        ],
        [
            'foto' => 'Spiegel.JPG'
        ],
        [
            'foto' => 'Stammen.jpg'
        ],
        [
            'foto' => 'Voet.jpg'
        ],
        [
            'foto' => 'Vogels.jpg'
        ]
    );
    $foto->save();

Изображения второго альбома

   $foto = new Foto([
            'foto' => 'Maan.jpg'
        ],
        [
            'foto' => 'Plant.JPG'
        ],
        [
            'foto' => 'Sneeuw.JPG'
        ],
        [
            'foto' => 'Stammen.jpg'
        ],
        [
            'foto' => 'Steen.JPG'
        ],
        [
            'foto' => 'Vlinder.jpg'
        ],
        [
            'foto' => 'Vogels.jpg'
        ]
    );
    $foto->save();
 }
}

1 Ответ

0 голосов
/ 18 декабря 2018

Используйте определение столбца без знака для привязки внешних ключей к идентификаторам.

Определите также внешние ключи для правильного соединения ваших таблиц.

Попробуйте объявить вашу таблицу следующим образом:

<?php
// Fotos table 
public function up() {
    Schema::create('fotos', function (Blueprint $table) {
        $table->increments('id');
        $table->string('foto');
        $table->integer('album_id')->nullable()->unsigned();
        $table->timestamps();

        $table->foreign('album_id')->references('id')->on('albums');
    });
}

// Album table
public function up() {
    Schema::create('albums', function (Blueprint $table) {
        $table->increments('id');
        $table->string('foto');
        $table->string('naam');
        $table->timestamps();
    });
}

// Pivot table
public function up() {
    Schema::create('album_foto', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('album_id')->unsigned();
        $table->integer('foto_id')->unsigned();
        $table->timestamps();

        $table->foreign('album_id')->references('id')->on('albums');
        $table->foreign('foto_id')->references('id')->on('fotos');
    });
}
...