2017-08-28 61 views
2

我有2表1產品belongsToMany顏色和第二顏色belongsToMany產品如何在Laravel中附加多對多的關係?

我做了我的表像這樣

產品表

Schema::create('products', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->timestamps(); 
      $table->string('image'); 
      $table->string('stock'); 
      $table->string('title'); 
      $table->string('slug')->unique(); 
      $table->string('gender'); 
      $table->text('description'); 
      $table->integer('price'); 
      $table->integer('user_id')->unsigned(); 
      $table->foreign('user_id')->references('id')->on('users') 
         ->onDelete('restrict') 
         ->onUpdate('restrict'); 

      $table->dateTime('published_at'); 
     }); 

和顏色表與關係

Schema::create('colors', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name')->unique(); 
      $table->timestamps(); 
     }); 

     Schema::create('color_product', function (Blueprint $table) { 
      $table->integer('color_id')->unsigned()->index(); 
      $table->foreign('color_id')->references('id')->on('colors') 
         ->onDelete('restrict') 
         ->onUpdate('restrict'); 
      $table->integer('product_id')->unsigned()->index(); 
      $table->foreign('product_id')->references('id')->on('products') 
         ->onDelete('restrict') 
         ->onUpdate('restrict'); 
      $table->timestamps(); 
     }); 

我正在嘗試在此類產品中添加更多顏色

public function addproductdetailspost(Request $request, $product){ 

     $product = product::where('slug', $product)->firstorfail(); 
     $color = color::where('name', $request->color)->firstOrCreate(); 
     $color->name = $request->color; 
     $color->save(); 
     $product_id = $product->id; 
     $color_id = $color->id; 
     $product->colors()->attach($product_id); 
     return Redirect::back()->with('status', 'Post Success'); 
    } 

它不工作,我得到這個錯誤

Type error: Too few arguments to function Illuminate\Database\Eloquent\Builder::firstOrNew(), 0 passed in C:\xampp\htdocs\swimwear2\app\Http\Controllers\AdminController.php on line 109 and at least 1 expected 
+0

什麼是不工作?請相應地更改您的問題,否則很難爲您提供幫助。 –

+0

@JensHöpken我添加了錯誤對不完整的問題抱歉 –

回答

1

這是錯誤的方向。

$color->products()->attach($product_id);