Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny][Laravel 5.2] Unique (database) pomoc w zbudowaniu warunku
Forum PHP.pl > Forum > PHP > Frameworki
wujek2009
Hej,

próbuje napisać regułę walidacyjną unique (dla db) ~ https://laravel.com/docs/5.2/validation#rule-unique

  1. public function rules()
  2. {
  3. $userObject = (..);
  4.  
  5. $rules = [
  6. 'iso' => 'required',
  7. 'tax_number' => 'required|unique:user,tax_number questionmark.gif,'. $userObject->id
  8. ];
  9.  
  10. return $rules;
  11. }


sql'owo ma to wyglądać tak:
  1. # where tax_number = "WARTOSC_Z_FORMULARZA" AND iso = "WARTOSC_ISO_Z_FORMULARZA" AND id != $userObject->id


w docu jest przykład:
Kod
'email' => 'unique:users,email_address,NULL,id,account_id,1'


tylko nie wiem dlaczego tam jest NULL?
markonix
Ten 3 argument służy do pominięcia "WARTOSC_ISO_Z_FORMULARZA" gdybyś edytował ten wiersz bo bez tego przy edycji wyświetlałoby Ci, że taki rekord istnieje.

Co do problemu to standardowo pozwala na dodanie tylko warunków WHERE, a Ty byś potrzebował coś w stylu WHERE NOT, nie wiem czy nie będzie trzeba jednak customowego warunku tutaj zrobić.
Pyton_000
No dobra, a te rules co podałeś nie działają?
przepuszczając form prze te warunki otrzymjesz:

- iso -> wymagany(dowolny nie pusty)
- tax_number -> wymagany(dowolny nie pusty), unikalny w tabeli "user" kolumnie "tax_number", ignorując rekord ID = $userObject->id.

Czyli w SQL coś takiego:

  1. UPDATE users SET iso = '..', tax_number = '...' WHERE id != XX


Jeśli jednak chcesz dodać te 2 pozostałe kolumny to musisz dodać custom rule.
Ale to będzie bez sensu. (No chyba że nie masz założonego indeksu unikalnego)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.