Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inny][laravel 5.1] Dublowanie rekordów przy szybkim odświeżaniu strony
Looozak
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.04.2010
Skąd: Częstochowa

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


Witam,

wydaje mi się, że moje pytanie jest banalnie proste, ale mój mózg już chyba dzisiaj przestał pracować, nawet nie wiem jak szukać rozwiązania. Praca inżynierska goni...

Mianowicie:
Sprawdzam czy istnieje rekord w bazie, jeżeli nie istnieje to tworzę nowy. Podczas przytrzymania F5 rekordów dodaje się kilka. Klucz unique w bazie nie wchodzi w grę.

  1. if (!Auth::user()->jakis_item()) {
  2. JakisItem::firstOrCreate([
  3. 'user_id' => Auth::user()->id
  4. ]);
  5. }


Dodam tylko, że User i JakisItem są połączone relacją One to Many, a metoda jakis_item() klasy User zwraca pojedynczy obiekt Eloquenta.

Chodzi mi o to żeby każdy użytkownik miał ZAWSZE minimum jeden JakisItem, który może, np zmienić właściciela i wtedy chcę utworzyć nowy. Kod powyżej wykonuje się po każdym odświeżeniu strony i sprawdza czy ten item nie zniknął (jest w konstruktorze kontrolera).

Podczas tworzenia użytkownika w metodzie postRegister klasy kontrolera AuthController tworzę rekord tak jak powyżej. Jeśli jest na to jakiś lepszy sposób bardzo proszę o nakierowanie na niego.

Pozdrawiam!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ja w tym przypadku zrezygnowałbym z zapisywania tego w PHP. Narzut będzie stosunkowo duży (odpalaniem za każdym razem), a w przypadku ingerencji z poziomu bazy danych będziesz musiał ręcznie dodawać te itemy. Dlatego proponowałbym napisanie triggera. Nie znam logiki Twojej aplikacji, ale po tym co piszesz to byłby on odpalany w co najmniej 2 przypadkach:
1. Tworzenie użytkownika.
2. Przekazywanie itemu innemu użytkownikowi.
Według mnie to co opisujesz to integralność danych w bazie: każdy użytkownik musi mieć co najmniej 1 dany item. Niech więc baza sama o to dba, a nie aplikacja.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 09:10