Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF]Propel i save(), Po wykonaniu save() w ramach aktualizacji rekordu zwraca 0
kkamis
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 24.03.2011

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


Witam,

Być może podobny wątek istnieje już na forum - ja niestety nic takiego nie znalazłem...

Problem polega na tym, że przekazuje do akcji dane z formularza. Na ich podstawie mają zostać utworzone nowe rekordy w bazie danych jak i zaktualizowane już istniejące. O ile przy zapisie nowych rekordów funkcja propela save() zwraca liczbę 1 tak przy aktualizacji zwracane jest 0 choć sama aktualizacja następuje prawidłowo. Z tego co wyczytałem to funkcja ta zwraca liczbę "przetworzonych?" wierszy (być może źle zrozumiałem). Wydaje mi się, że w kodzie jest wszystko w porządku, ale mogę się oczywiście mylić...

Oto kod:

  1. foreach($_POST['obj'] as $obj) {
  2. if($obj['id']) {
  3. $update_obj = ObjPeer::retrieveByPK($obj['id']);
  4. } else {
  5. $update_obj = new Obj();
  6. }
  7. $update_obj->setValue($obj['value']);
  8. if(!$update_obj->save()) $success = false;
  9. }


Z góry dziękuję za wszelką pomoc i pozdrawiam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
arecki
post
Post #2





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


Przeglądałem manual ale nic sensownego tam nie znalazłem. Na szybko myśląc możesz zrobić sobie jakieś pole "token", do którego podczas update'u rekordu wpiszesz wartość którą przez updatem sobie wygenerowałeś. Przed updatem, zapisz sobie ilość wierszy które miały być zmienione, a po updacie łatwo wyciągniesz te które miały być uaktualnione. Po tym sprawdzić czy ilość wierszy przed aktualizacją zgadza się z tą po aktualizacji. Potem czyść pole "token" i sprawa na szybko jest załatwiona. Nie wiem na ile to "eleganckie" rozwiązanie ale wydaje mi się że będzie pewne.

Ten post edytował arecki 29.03.2011, 14:26:05
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: 15.10.2025 - 11:26