Laravel - 如何在请求文件中获取对象的参数

时间:2016-10-01 09:40:52

标签: php laravel validation eloquent

我正在使用Laravel 5.3,我想在请求文件中进行查询,我对该表单有一些验证规则,用户可以编辑其频道。在那个文件中,我想做一个看起来像这样的查询:

$channelId = Auth::user()->channels()->where('id', $this->id)->get();

因此我可以获取通道ID并将其从rules数组中排除,这就是文件的样子:

public function rules()
    {
        $channelId = Auth::user()->channels()->where('id', $this->id)->get();

        return [
            'name' => 'required|max:255|unique:channels,name,' . $channelId,
            'slug' => 'required|max:255|alpha_num|unique:channels,slug,' . $channelId,
            'description' => 'max:1000',
        ];
    }

我不确定如何获取请求文件中正在更新的对象的channel id

3 个答案:

答案 0 :(得分:0)

当在Request对象内部时,当您输入名称" id"时,可以通过调用$this->input("id")正确地说出@Silwerclaw来输入输入。

当在对象外部时,您可以使用外观:Request::input("id")

答案 1 :(得分:0)

我使用了一个会话,我已经在编辑函数中存储了一个密钥,然后在我的查询中的请求文件中检索它,现在它可以工作,用户无法在表单中操作它:

$channel = Auth::user()->channels()->where('id', session('channel_id'))->first();

答案 2 :(得分:0)

我使用了模型,在请求文件中我们可以通过$ this和模型名称访问该对象,使用它我们可以访问所有属性,所以改变如下。

$channel = Auth::user()->channels()->where('id', $this->channel->id))->first();

但我不这样做,我直接在规则中使用$this->channel->id,如下所示。

return [
        'name' => 'required|max:255|unique:channels,name,' . $this->channel->id,
        'slug' => 'required|max:255|alpha_num|unique:channels,slug,' . $this->channel->id,
        'description' => 'max:1000',
    ];