#php #laravel #laravel-4 #eloquent
#php #laravel #laravel-4 #eloquent
Вопрос:
У меня есть следующий код:
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 IlluminateDatabaseQueryBuilder::price()
Я думаю, что проблема в том, что массовое присвоение происходит в $product = new Product($input);
Есть ли какой-либо способ присвоить другое значение ПОСЛЕ этого? Значение для price
отсутствует внутри $product
.
Ответ №1:
Вы можете использовать это:
$product->price = $amazon_product->price();
Вместо:
$product->price($amazon_product->price());
Здесь $product
это Eloquent Model
объект и price
свойство этого объекта, но вы используете его как method
.
Комментарии:
1. Конечно, какая глупая ошибка. Вчера было слишком поздно 🙂 Спасибо!