Laravel FirstorNew()/ FirstorCreate()关系错误

时间:2017-08-28 09:45:13

标签: php laravel laravel-5.4

我有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()

谢谢

2 个答案:

答案 0 :(得分:2)

您不需要对“颜色”模型使用where方法,因为firstOrNew适用于您。

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

Laravel 5.4 Documentation

答案 1 :(得分:0)

我忘了添加参数

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

现在正在运作