【问题标题】:Laravel - validate input with Rule::uniqueLaravel - 使用 Rule::unique 验证输入
【发布时间】:2018-10-16 19:42:09
【问题描述】:

如果变量名与 DB 中的列名不同,我如何验证变量。

 'gameDetails.title' => [
                'required',
                'string',
                'between:3,100',
                Rule::unique('games')->ignore($this->input('gameId')),
            ],

在上面的示例中,我的输入变量名称是“gameDetails.title”,但在 DB 中,我的列名只是标题。所以在这种情况下我有这个错误:

SQLSTATE[42S22]:未找到列:1054 未知列 'where 子句'中的'gameDetails.title'

那么如何告诉“laravel”我的列名只是“标题”?

谢谢。

【问题讨论】:

  • gameDetails是你数据库表的名字吗?

标签: laravel


【解决方案1】:

unique 验证器采用第二个参数,即数据库中列的名称:

Rule::unique('games','title')->ignore($this->input('gameId'))

https://laravel.com/docs/5.7/validation#rule-unique

/**
 * Get a unique constraint builder instance.
 *
 * @param  string  $table
 * @param  string  $column
 * @return \Illuminate\Validation\Rules\Unique
 */
public static function unique($table, $column = 'NULL')
{
    return new Rules\Unique($table, $column);
}

【讨论】:

  • 感谢您提供信息。你拼错了,我猜应该是“Rule::unique('games', 'title')”。因为我的版本有效。
猜你喜欢
  • 2022-08-22
  • 2021-01-23
  • 2016-07-01
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2016-12-16
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多