Laravel Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 03 января 2019

Прежде чем вы начнете давать голосование или пометить как дублированный, прочитайте:

Я прочитал Невозможно добавить или обновить дочернюю строку, ограничение внешнего ключа не выполнено и это не мой случай,

  1. У меня есть существующая запись
  2. моя таблица поддерживает каскад при удалении.
  3. У меня также есть мои столбцы без знака, обнуляемые

- коды указаны ниже

Проблема

Я пытаюсь сохранить связанные данные в 3-й таблице с именем product_attributes с помощью метода sync, который получает product_id и attribute_id

Код

schema

public function up()
{
        Schema::create('product_attributes', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('product_id')->nullable()->unsigned();
            $table->integer('attribute_id')->nullable()->unsigned();
        });
        Schema::table('product_attributes', function (Blueprint $table) {
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
            $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade');
        });
}

product model

public function attributes(){
        return $this->belongsToMany(Attribute::class, 'product_attributes', 'product_id', 'attribute_id');
}

attribute model

public function products(){
        return $this->belongsToMany(Product::class);
}

product controller

$product->save()
$product->attributes()->sync($request->attributes, false);

blade

<select class="form-control" name="attributes[]" id="attributes" multiple="multiple">
  @foreach($attributes as $attribute)
    <option value="{{ $attribute->id }}">{{ $attribute->title }}</option>
  @endforeach
</select>

Ошибка

вот что я получаю:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`shopping`.`product_attributes`, CONSTRAINT `product_attributes_attribute_id_foreign` FOREIGN KEY (`attribute_id`) REFERENCES `attributes` (`id`) ON DELETE CASCADE) (SQL: insert into `product_attributes` (`attribute_id`, `product_id`) values (*parameters, 3))

Кто-нибудь может помочь с этим?

Обновление

Вот что я получаю, когда отправляю свои данные контроллеру

one

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...