我有2个表叫做产品和颜色 产品belongsTomany颜色和颜色belongsToMany产品使用多对多的关系 现在我想在单个产品中添加更多颜色并首先检查颜色名称,如果它不存在而不是在这里创建新是我的代码
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()
谢谢
答案 0 :(得分:2)
您不需要对“颜色”模型使用where
方法,因为firstOrNew
适用于您。
$color = color::firstOrNew(['name', $color_name]);
//$color->name = $color_name; No need s
$color->save();
答案 1 :(得分:0)
我忘了添加参数
$color = color::where('name', $color_name)->firstOrCreate(['name' => $color_name]);
现在正在运作