【问题标题】:how to prevent dublicate data with validation in laravel livewire如何在 laravel livewire 中通过验证来防止重复数据
【发布时间】:2021-12-08 19:15:04
【问题描述】:

我想防止数据库中的数据重复,所以需要使用验证。如果之前使用了同一个教室,应该有一个错误消息“这个教室已经存在”。如何在 laravel 中创建这样的自定义验证?

这是我当前的代码:

<div class="sm:col-start-1 sm:col-end-3 col-span-3  ">
    <x-select x-on:change="isShowing = $event.target.value" name="classroom_id" label="{!! __('Sınıf') !!}" wire:model="classroom_id"
            id="classroom_id"
            :options="$this->classes"/>
    <x-jet-input-error for="classroom_id" class="mt-2" />
</div>

<div class="col-span-2 " x-show="isShowing">
    <label class="tf-form-label" for="course_name">
        {{ __('Ders') }}
    </label>
    <input wire:model.debounce.250ms="course_name" type="text" name="course_name" id="course_name" class="tf-input" />
    <x-jet-input-error for="course_name" class="mt-2" />
</div>
public function saveCourse(){
    $this->validate(['course_name' => 'required','classroom_id' => 'required']);
    
    $course = new Course();
    $course->name = $course_name;
    $course->classroom_id = $classroom_id;
    $course->save();
  
    $this->render();

}

【问题讨论】:

  • 所以你正在为每门课程分配课程,你不希望同一课程可以分配给多个课程,对吧??
  • 是的,我就是这个意思

标签: laravel validation laravel-livewire


【解决方案1】:

你可以使用唯一规则

...
$this->validate([
    'classroom_id' => 'required|{TableName}',
]);
...

参考https://laravel.com/docs/8.x/validation#rule-unique

【讨论】:

    【解决方案2】:

    您可以使用“唯一”验证方法来实现它,并在其中定义您要检查的表和列

    $this->validate([
      'course_name' => 'required',
      'classroom_id' => 'required|unique:courses,classroom_id'
    ]);
    

    在编辑方法上,这种方法会发生变化,一旦您需要忽略该字段的验证,如果没有对其进行任何更改。然后你就可以这样做了

    $this->validate([
      'course_name' => ['required']
      'classroom_id' => ['required',Rule::unique('courses','classroom_id')->ignore('id',$this->course->id)]
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 2022-01-07
      • 2016-06-21
      • 1970-01-01
      • 2018-06-13
      • 2020-09-16
      • 1970-01-01
      相关资源
      最近更新 更多