保存Eloquent模型与关系做两个条目,为什么?

时间:2018-03-14 12:22:04

标签: laravel laravel-5.5 laravel-eloquent

这是我的控制器方法:

public function store(Request $request, $course_id){
    $price['value'] = $request->price;
    $price['desc'] = $request->desc;
    If ($request->promo === "on") {
        $price['promo'] = 1;
    } else {
        $price['promo'] = 0;
    }

    $course = Course::find($course_id);
    Price::create($price)->courses()->save($course);
    return redirect('/course/'.$course_id.'/edit');
}

例如,如果我的请求var有:

$request->price = 100
$request->desc = 'blablabla'
$request->promo = 'on'

提交表单后,我得到了两个具有相同数据的新行:

表价格:

id | price | desc      | promo
1  | 100   | blablabla | on
2  | 100   | blablabla | on

模型的一些信息,我:

public function courses () {
    return $this->belongsToMany('App\Course', 'course_price');
}

在价格模型和:

public function prices () {
    return $this->belongsToMany('App\Price', 'course_price');
}

在课程模型中。

怎么了?

2 个答案:

答案 0 :(得分:0)

尝试attach

$price = Price::create($price);
$price->courses()->attach($course_id);

而不是:

$course = Course::find($course_id);
Price::create($price)->courses()->save($course);

答案 1 :(得分:0)

看起来你在

上提出了双重要求
Price::create($price)->courses()->save($course);

创建并保存。 请使用

尝试您的代码
Price::create($price)->courses();