我正在寻找一种方法将post_id值插入$ request-> all()。我到目前为止的代码是:
public function createReview(ReviewRequest $request, $id) {
$review = Auth::user()->reviews()->create($request->all());
$review->task_id = $id;
$review->save();
return $review;
}
即使它正在工作,我也在寻找更清洁的方法。我的模特是:
User: hasMany->reviews ; hasMany->task
Review: belongsTo->user ; belongsTo->task
Task: belongsTo->user ; hasMany->reviews
答案 0 :(得分:0)
一种方法是使用隐藏的输入字段,如:
<input type="hidden" name="task_id" value="{{$task->id}}">
或者如果您使用 Illuminate \ Html \ HtmlServiceProvider 和 Blade :
{!! Form::hidden('task_id', $task->id) !!}
然后你的createReview方法看起来会更清晰:
// Controller
public function createReview(ReviewRequest $request) {
$review = Auth::user()->reviews()->create($request->all());
return $review;
}
不要忘记调整你的routes.php。您也可以添加
// ReviewRequest.php
$rules = [ ...,
'task_id' => 'required',
];
查看ReviewRequest中的规则,以确保每次审核都属于创建任务时的任务。