我正在使用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
?
答案 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',
];