Ошибка с моделью данных в Laravel (SQLSTATE [42S01]) - PullRequest
1 голос
/ 27 января 2020

Доброе утро, я пытаюсь сделать модели данных для приложения рабочих семинара. Проблема возникает с направляющими и изображениями моделей данных. Каждый гид имеет свое собственное изображение, и каждое изображение принадлежит гиду. Когда я пытаюсь запустить миграцию и Laravel выдает SQLSTATE, и я не нахожу ошибку, поэтому я был бы признателен за вашу помощь.

Миграция направляющих:

Schema::create('guides', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->text('topic')->nullable();
            $table->string('author')->nullable();
            $table->year('year')->nullable();
            $table->text('goal')->nullable();
            $table->text('description')->nullable();
            $table->smallInteger('assistants_quantity')->nullable();
            $table->smallInteger('duration_hours')->nullable();
            $table->string('methodology')->nullable();
            $table->bigInteger('image_id')->unsigned();
            $table->foreign('image_id')->references('id')->on('images');
            $table->timestamps();
            $table->softDeletes();
        });

модель направляющих:

class Guide extends Model
{
    protected $table = 'guides';
    public $timestamps = true;

    use SoftDeletes;

    protected $dates = ['deleted_at'];
    protected $fillable = ['title', 'topic', 'author', 'year', 'goal', 'description', 'assistants_quantity', 'duration_hours', 'methodology'];
    protected $visible = ['title','topic', 'author', 'year', 'goal', 'description', 'assistants_quantity', 'duration_hours', 'methodology'];

    public function materials()
    {
        return $this -> belongsToMany(Material::class);

    }

    public function images()
    {
        return $this -> belongsTo(Image::class);
    }

    static function search($keyword)
    {
        $result = Guide::where('title', 'LIKE', '%' . $keyword . '%')->get();
        return $result;
    }


}

Миграция изображений:

        Schema::create('images', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('image');
            $table->timestamps();
        });

Модель изображений:

class Image extends Model
{
    protected $fillable = ['image'];

    public function images()
    {
        return $this -> belongsTo(Guide::class);
    }
}

Обновление: php Ремесленник: статусное изображение Screenshot of php artisan:status

Ответы [ 3 ]

0 голосов
/ 27 января 2020

Вещи, которые вы можете попробовать:

  • Убедитесь, что файл переноса изображений предшествует файлу переноса направляющих, поскольку image_id является внешним ключом в таблице направляющих
  • Выполнить php artisan migrate:reset
0 голосов
/ 27 января 2020

Переместите файл переноса изображения вверх в файл переноса направляющих, поскольку в файле переноса руководства вы ссылаетесь на images_id в своем внешнем ключе. Переместить это. просто обновите дату файла миграции изображений.

Поскольку ваша инструкция по миграции была создана на 2019_12_10, ваша таблица изображений должна быть 2019_12_09 or lower. Просто переименуйте его.

0 голосов
/ 27 января 2020

Порядок, поскольку ваша 'guides' миграция зависит от 'images' первичного ключа: 'images' миграция должна быть выполнена до 'guides'.

Вы должны изменить порядок файлов миграции. смотреть эту ссылку

...