【问题标题】:Laravel 8 Unique form validation ignoreLaravel 8 唯一表单验证忽略
【发布时间】:2021-02-07 06:34:53
【问题描述】:

我的表单编辑

<form action="{{ route('admin.akun.update', $akun->id_pegawai) }}" method="POST">
@csrf
@method('patch')
<input type="text" class="form-control" @if (old('nip')) value="{{old('nip')}}" @else value="{{$akun->nip}}" @endif name="nip">

我的路线

Route::patch('admin/akun/{id_pegawai}', 'AkunController@update')->name('admin.akun.update');

我的控制器

public function update(Request $req, $id_pegawai)
{
    $user = new User;
    $pegawai = new Pegawai;
    $this->validate($req, [
        'nip' => ["required", "unique:users,nip," . $id_pegawai],
    ]);
}

条件:我编辑了我的数据,我有一个唯一字段,如果我不更改唯一字段,它将被成功编辑,如果我用相同的数据替换它,则会出现警报

【问题讨论】:

  • 如何检索$id_pegawai
  • 您能否验证$id_pegawai 是否具有要忽略的正确值?还有什么列$id_pegawai 与数据库相关?
  • @ClémentBaconnier 我想更新我的数据。但我有独特的领域。我在表格上扔了 id_pegawai
  • 好的,但是您没有向我们提供任何我们可以用来帮助您的信息。我们需要了解有关您的变量的更多信息。你如何检索它(你有某个地方 $id_pegawai = ... 我想)这个值应该对应什么。还有,$id_pegawai的内容是什么
  • @ClémentBaconnier 我添加了一个额外的解释

标签: php laravel validation unique


【解决方案1】:

您需要指定您希望哪一列是唯一的

 Rule::unique('users', 'nip')->ignore($id_pegawai, 'id_pegawai'),

【讨论】:

  • 这绝对是问题所在。因为默认情况下它忽略id 列。所以OP只需要指定要输入的列名
  • 没问题!但不要忘记接受答案,这样它就会关闭问题。
  • 如果$id_pegawai是用户输入(因为用户想手动输入id)怎么办?文档有警告,我认为反对它 idk 其他方式:(laravel.com/docs/8.x/validation#rule-unique.You should never pass any user controlled request input into the ignore method. Instead, you should only pass a system generated unique ID such as an auto-incrementing ID or UUID from an Eloquent model instance. Otherwise, your application will be vulnerable to an SQL injection attack.
  • @Fahmi 在我看来,让您的用户定义他们自己的应用程序必须依赖的 ID 绝不是一个好主意。我仍然会有自己的“应用”ID 和用户 ID。但是,如果这不能应用,我会创建一个custom Rule 并在那里进行检查。
【解决方案2】:

试试这样:

["required", "unique:users,nip,".$id_pegawai]

文档:https://laravel.com/docs/8.x/validation#rule-unique

语法:unique:table,column,except,idColumn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2013-06-03
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多