Я создаю простое приложение с пользователями, статьями и предложениями. Теперь Пользователь может создавать статьи и предложения к этой статье. SO Пользователь имеет много статей и имеет много предложений, статья относится к пользователю и имеет много предложений и предложений принадлежит пользователю и статье ... поэтому я пишу:
в модели пользователя:
public function articles(){
return $this->hasMany('App\Article');
}
public function offer(){
return $this->hasMany('App\Offer');
}
в модели статьи:
public function user(){
return $this->belongsTo('App\User');
}
public function offer(){
return $this->hasMany('App\Offer');
}
а в модели Offer я пишу:
public function user(){
return $this->belongsTo('App\User');
}
public function article(){
return $this->belongsTo('App\Article');
}
Но теперь у меня есть проблема, как создать функцию store () в моем OffersController - я пытаюсь:
public function store(Requests\OfferRequest $request)
{
$offer = new Offer($request->all());
Auth::user()->articles()->offer()->save($offer);
Alert::success('Offer is succesfully added!','Good job!')->persistent("Close");
return redirect('offers');
}
но я получаю ошибку:
BadMethodCallException в строке 2071 Builder.php: вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: article ()
также мой код формы:
{!! Form::open(['url'=>'offers']) !!}
<div class="form-group">
{!! Form::label('price','Price') !!}
{!! Form::text('price', null, ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit('Add Offer', ['class'=>'btn btn-primary form-control']) !!}
</div>
{!! Form::close() !!}
и мой маршрут:
Route::resource('offers', 'OffersController');
Как добавить предложение, и это предложение должно иметь user_id Auth :: user и article_id ...
Когда я использую: Auth::user()->offer()->save($offer);
, тогда предложение сохраняется, но только с user_id, и я не знаю, как я могу получить article_id для хранения предложения.
Также я знаю, что могу поместить {{$article->id}}
в шаблон лезвия и извлечь их из формы, но это высокий риск для безопасности ...
Еще одна вещь - только пользователи (администраторы) могут создавать статьи, но все пользователи могут размещать предложения в статье, так что мне нужен user_id в таблице предложений ...
Пожалуйста помоги!