Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Zend] Last inserted ID z create row
reyne
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


Witam, mam taki kawałek kodu (z Social Engine 4 opartym na Zendzie), który tworzy wydarzenie i dodaje również temat z taką samą nazwą na forum:

  1. // Process
  2. $values = $form->getValues();
  3. $values['user_id'] = $viewer->getIdentity();
  4. $values['parent_type'] = $parent_type;
  5. $values['parent_id'] = $parent_id;
  6. if( $parent_type == 'group' && Engine_Api::_()->hasItemType('group') && empty($values['host']) ) {
  7. $values['host'] = $group->getTitle();
  8. }
  9.  
  10. $db = Engine_Api::_()->getDbtable('events', 'event')->getAdapter();
  11.  
  12.  
  13. $db->beginTransaction();
  14.  
  15. try
  16. {
  17. // Create event
  18. $table = $this->_helper->api()->getDbtable('events', 'event');
  19. $event = $table->createRow();
  20. $lastid = $this->table->getAdapter()->lastInsertId();
  21.  
  22. $event->setFromArray($values);
  23. $event->save();
  24.  
  25. $data = array(
  26. 'forum_event_id' => '',
  27. 'topic_id' => '7',
  28. 'event_id' => ''.$lastid.''
  29. );
  30.  
  31. $db->insert('engine4_forum_event_topics',$data);


Sprawa wydaję się prosta bo wystarczy użyć funkcji lastInsertId();
Jednak nie działa - zmienna lastid nie przekazuje ostatnio dodanego rekordu do bazy, bo źle to wstawiam i nie wiem gdzie to powinno być.

Mam taki błąd:

  1. Call to a member function getAdapter() on a non-object


Jak wstawić i "wychwycić" ostatnio dodane ID eventu z bazy poprawnie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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



  1. //zamiast tego
  2. $lastid = $this->table->getAdapter()->lastInsertId();
  3. // powinno chyba być
  4. $lastid = $table->getAdapter()->lastInsertId();


Sam błąd mówi wszystko.

P.S. Nawet nie chce wiedzieć co to za aplikacja i kto ją psiał bo się wystraszyłem tymi tworami :/
Go to the top of the page
+Quote Post
reyne
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


Co do skryptu jest to skrypt społecznościowy.

niestety nie działa, zmienna zwraca wartość 0
Go to the top of the page
+Quote Post
melkorm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Nie wiem co to za skrypt, a herbaty w domu nie mam, a kawę piję rozpuszczalną więc z fusów raczej nie powróżę :/
Go to the top of the page
+Quote Post
reyne
post
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


szkoda, może powinieneś sprobować ?(IMG:style_emoticons/default/winksmiley.jpg) bo jednak okazało się to bardzo proste, sam do tego doszedłem:

  1. $event->setFromArray($values);
  2. $event->save();
  3. $lastid = $event->event_id;


i mamy ID (IMG:style_emoticons/default/winksmiley.jpg)

Temat do zamknięcia.
Go to the top of the page
+Quote Post
melkorm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
szkoda, może powinieneś sprobować ? bo jednak okazało się to bardzo proste, sam do tego doszedłem:


Bo to jest poprawny scenariusz.

Ja się kierowałem tym czymś co Ty wkleiłeś.

Chciałeś "ostatnie ID" nie konkretnie id zapisanego wydarzenia.

Zend przy ActiveRecord gdy robisz save od razu ustawia id rekordu na wstawione.
Go to the top of the page
+Quote Post

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: 22.09.2025 - 21:29