Неизвестное поле столбца при сохранении значения методом attach () Laravel - PullRequest
0 голосов
/ 28 июня 2018

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

Столбец не найден: 1054 Неизвестный столбец 'category_id' в 'списке полей' (SQL: вставить в size_products (category_id, product_id) значения (маленький, 5))

Моя таблица size_products Структура, подобная этой (size_id, product_id). Но не знаю, откуда взялась category_id колонка

Вот мои модели:

   //Size Model


class Size extends Model
    {

        public function Products()
        {
            return $this->belongsToMany(Product::class, 'size_products','product_id','size_id');
        }
    }


/////// Product Model


class Product extends Model
{
    public function Categories()
    {
        return $this->belongsToMany(Category::class, 'category_products');
    }
    public function Colors()
    {
        return $this->belongsToMany(Category::class, 'color_products');
    }
    public function Sizes()
    {
        return $this->belongsToMany(Category::class, 'size_products');
    }
    public function FirstImage(){
        $data = explode(',',$this->images);
        return $data[0];
    }
}

Вот мой контроллер:

      $product = new Product();
 $product->name= $request->input('name');
 $product->model= $request->input('model');
 $product->save();
            $product->Categories()->attach($request->input('categories_id'));
            foreach ($request->sizes as $size){
                $product->Sizes()->attach($size);
            }
            foreach ($request->colors as $color){
                $product->Colors()->attach($color);
            }

База данных:

Schema::create('size_products', function (Blueprint $table) {
    $table->increments('id');

    $table->integer('product_id')->unsigned();
    $table->foreign('product_id')->references('id')->on('products')->onUpdate('cascade')->onDelete('cascade');

    $table->integer('size_id')->unsigned();
    $table->foreign('size_id')->references('id')->on('sizes')->onUpdate('cascade')->onDelete('cascade');
    $table->timestamps();
});

1 Ответ

0 голосов
/ 28 июня 2018

Исправьте эти отношения в модели вашего продукта.

public function Sizes()
{
    return $this->belongsToMany(Size::class, 'size_products');
}

public function Colors()
{
    return $this->belongsToMany(Color::class, 'color_products');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...