blackroger
29.09.2010, 22:40:14
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?
mdco
30.09.2010, 12:20:08
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.
Juzek
6.10.2010, 17:56:14
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.
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.