Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inny][Laravel 5.2] Unique (database) pomoc w zbudowaniu warunku
wujek2009
post
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


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?

Ten post edytował wujek2009 5.04.2016, 16:52:00
Go to the top of the page
+Quote Post
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował markonix 5.04.2016, 18:17:45


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:16