2017-08-28 93 views
0

我有2個表稱爲產品和顏色 產品屬於Toomany顏色和顏色belongsToMany產品使用多對多關係 現在我試圖在單個產品中添加更多顏色並檢查顏色名頭,如果它不存在不是創建新的,這裏是我的代碼Laravel FirstorNew()/ FirstorCreate()關係錯誤

public function addproductdetailspost(Request $request, $product){ 
    $color_name = $request->color; 
    $product = product::where('slug', $product)->firstorfail(); 
    $color = color::where('name', $color_name)->firstOrNew(); 
    $color->name = $color_name; 
    $color->save(); 
    $product_id = $product->id; 
    dd($product_id); 
    $color_id = $color->id; 
    $color->products()->attach($product_id); 
    return Redirect::back()->with('status', 'Post Success'); 
} 

,但現在我得到這個錯誤

Type error: Too few arguments to function Illuminate\Database\Eloquent\Builder::firstOrNew() 

謝謝

回答

2

你並不需要使用where方法顏色模型,因爲firstOrNew確實是給你的。

$color = color::firstOrNew(['name', $color_name]); 
//$color->name = $color_name; No need s 
$color->save(); 

Laravel 5.4 Documentation

0

我忘了補充論據

$color = color::where('name', $color_name)->firstOrCreate(['name' => $color_name]); 

現在它的工作