未定义的偏移量:laravel验证时出错1次

时间:2017-03-30 10:48:51

标签: php laravel relationships

我在laravel中的表单上有一些验证,以确保用户声称的礼物是使用以下代码分配给其广告系列的礼物

'gift_id' => 'required|int|exists:gifts,campaign_id,' . \Auth::user()->campaign->id,

但是在表单提交中我收到以下错误

  

ValidatesAttributes.php第721行中的ErrorException:       未定义的偏移量:1

有人可以帮帮我吗?

由于

2 个答案:

答案 0 :(得分:5)

我目前正在处理的Laravel应用程序开始抛出异常。就我而言,问题略有不同。这是我的原始代码:

// ...

'extension_id' => [
    'nullable',
    'int',
    Rule::exists('extensions,id'),
],

// ...

我将,id添加到表名中,希望在框架检查值存在时使用正确的列名。但是,它并没有按预期工作。我从Illuminate\Validation\Concerns\ValidatesAttributes类获得了该异常。

  

未定义的偏移量:1

经过一些尝试,我终于能够通过将两个参数传递给规则而不是单个字符串来克服错误:

Rule::exists('extensions', 'id'),

我知道这与OP的情况不同,但我想它可以帮助其他人像我一样解决同样的问题。

答案 1 :(得分:1)

您需要更多自定义存在规则。根据{{​​3}}存在,字符串只能处理特定列中特定输入值的存在:

'gift_id' => [
    'required',
    'int',
    Rule::exists('gifts')->where(function ($query) {
        $query->where('campaign_id', \Auth::user()->campaign->id);
    }),
],

或者这种效果。