【问题标题】:Undefined offset: 1 error for laravel validation未定义的偏移量:laravel 验证出现 1 个错误
【发布时间】:2017-08-24 05:59:51
【问题描述】:

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

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

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

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

有人可以帮帮我吗?

谢谢

【问题讨论】:

  • 我不明白 exists 规则是为了检查什么
  • @apokryfos 是为了检查是否存在...
  • @Ian 不在抽象中,在这种特殊情况下
  • 它基本上是查询带有campaign_id的礼物与用户的campaign id相同。 (确保用户只能领取与其活动相关的礼物)
  • @user6073700 我不认为exists 会为你这样做,你可能需要一个自定义规则。

标签: php laravel relationships


【解决方案1】:

您需要更自定义的存在规则。根据docs作为字符串存在只能处理特定列中特定输入值的存在:

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

或类似的东西。

【讨论】:

  • 对不起,我有点困惑,上面的代码去哪里了?感谢您的帮助
  • 而不是您当前的规则。这是'gift_id' => 'required|int|exists:gifts,campaign_id,' . \Auth::user()->campaign->id, 的另一种写法(或多或少)
  • 它的工作伙伴,只是忘记包括规则类,非常感谢帮助
【解决方案2】:

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

// ...

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

// ...

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

未定义的偏移量:1

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

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

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

【讨论】:

  • 这让我在调用Rule::unique时遇到了同样的错误和解决方案
  • 奇怪的是它在文档中没有以这种方式表示。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多