在Laravel中分配质量后给Eloquent模型赋值


Assign value to Eloquent model after mass-asignment in Laravel

我有以下代码:

public function postCreate($subjectId = null) {
    if ($subjectId) {
        $subject = Subject::find($subjectId);
        $input = Input::all();
        $v = Validator::make($input, Product::$rules);
        if ($v->passes()) {
            $product = new Product($input);
            $amazon_product = new AmazonProduct($input['amazon_id']);
            $product->price($amazon_product->price());
            $subject->products()->save($product);
            Session::flash('message', 'Produkt erfolgreich gespeichert');
            return Redirect::to('boss/subjects/show/'.$subjectId);
        }
    } else {
        Session::flash('message', 'Innerhalb der POST-Action muss die Gruppen-ID angegeben sein.');
        return Redirect::to('boss/subjects');
    }
}

但是我得到以下错误:

Call to undefined method Illuminate'Database'Query'Builder::price()

我认为问题是发生在$product = new Product($input);的质量分配

是否有任何方法来分配另一个值之后?price的值在$product中不存在

您可以这样使用:

$product->price = $amazon_product->price();

代替:

$product->price($amazon_product->price());

这里,$productEloquent Model对象,price是该对象的属性,但您将其用作method