1

我正在寻找一种将 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
4

1 回答 1

0

一种方法是使用隐藏的输入字段,例如:

    <input type="hidden" name="task_id" value="{{$task->id}}">

或者如果您使用Illuminate\Html\HtmlServiceProviderBlade

    {!! 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 中的规则,以确保在创建任务时每条评论都属于一个任务。

于 2015-07-22T14:01:36.147 回答