簡體   English   中英

如何在laravel livewire中通過驗證防止重復數據

[英]how to prevent dublicate data with validation in laravel livewire

我想防止數據庫中的數據重復,所以需要使用驗證。如果之前使用過同一個教室,應該有一個錯誤消息“這個教室已經存在”。 如何在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();

}

您可以使用規則唯一

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

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

您可以使用“唯一”驗證方法來實現它,並在其中定義要檢查的表和列

$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)]
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM