未定义的偏移量:laravel 验证出现 1 个错误

Undefined offset: 1 error for laravel validation

我在 laravel 中对我的表格进行了一些验证,以确保用户领取的礼物是使用以下代码分配给他们的活动的礼物

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

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

ErrorException in ValidatesAttributes.php line 721: Undefined offset: 1

有人可以帮我吗?

谢谢

您需要更自定义的存在规则。根据docs exists as a string只能处理特定列中特定输入值的存在:

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

或类似的东西。

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

// ...

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

// ...

我将 ,id 添加到 table 名称,希望在框架检查值是否存在时使用正确的列名。但是,它没有按预期工作。我从 Illuminate\Validation\Concerns\ValidatesAttributes class.

得到了那个例外

Undefined offset: 1

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

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

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