![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 176 Pomógł: 0 Dołączył: 8.11.2008 Ostrzeżenie: (0%)
|
Czy jest możliwość wymuszenia i zablokowania id w danym modelu już podczas tworzenia samego formularza? Chodzi o to że potrzebuje znać id rekordu jeszcze przed jego zapisem do bazy. Rekord jest nowy.
ORM - Doctrine. Wiem że obiekt łączony z bazą tworzy się dopiero w momencie wywołania metody save(), ale czy da się to ominąć i dostać id wcześniej? Ten post edytował blackroger 29.09.2010, 23:13:08 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 5 Dołączył: 14.12.2004 Ostrzeżenie: (0%)
|
Nie da się.
ID rekordu nadaje się po wykonaniu zapytania INSERT. Oczywiście można znaleźć ostatni ID w tabeli przez zapytanie SELECT MAX(id) ale jest to niepewne, gdyż w czasie miedzy SELECT MAX(id) a INSERT może wykonać się inny INSERT do tej tabeli. Poza tym może być dziura w ciągłości ID (jeżeli pole jest autoincrement), na skutek wcześniejszego wykasowania rekordu z tej tabeli. Ten post edytował mdco 30.09.2010, 12:22:04 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 1.08.2007 Ostrzeżenie: (0%)
|
Da się.
W akcji definiującej formularz dajesz INSERT odczytujesz ostatni ID i zapisujesz go np w sesji, ciachu, pliku, innej tabeli itd. Po SUBMIT'cie formularza nie robisz $this->form->save(); tylko UPDATE wpisu utworzonego na początku mojego wpisu. W ten oto super magiczny sposób masz zarezerwowany ID. Jak sobie nie poradzisz, daj znać - napiszę Ci PHP. Pozdrawiam. Ten post edytował Juzek 6.10.2010, 17:58:07 |
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 05:15 |