Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Pobranie id z rekordu?
Forum PHP.pl > Forum > PHP > Frameworki
Pytajka
Witam,

mam metodę odpowiedzialną za aktywację użytkowników i napotkałem pewien problem, a raczej chęć najlepszego rozwiązania.

Metody aktualnie wygląda tak,

  1. public function action_confirm(){
  2.  
  3. $id = $this->request->param('id');
  4.  
  5. $this->active = ORM::factory('active');
  6.  
  7. $this->check = $this->active->where('key', '=', $id)->find_all();
  8.  
  9. if( $this->check->count_all() > '0'){
  10.  
  11. $role = new Model_Role( array('name' => 'login'));
  12.  
  13. $this->user = ORM::factory('user', $this->user->id);
  14.  
  15. $this->user->add('roles', $role);
  16.  
  17. }
  18. else
  19. {
  20.  
  21. $this->request->redirect('index');
  22.  
  23. }
  24.  
  25. }


Przy wywołaniu ORM muszę podać id użytkownika, id znajduje się w pobranym rekordzie, jednak nie wiem jak najłatwiej się do niego odwołać, nie używając foreach.

  1. $this->user = ORM::factory('user', $this->user->id); // chodzi mi o ten fragment.
skowron-line
Nie bardzo wiem ocb ale możliwe że chodzi o metodę find która zwróci pierwszy rekod. No ale mogę się mylić.
Pytajka
Nie o to dokładniej, zwracany jest rekord, a ja chciałbym z tego rekordu pobrać np. id użytkownika, które mieści się w kolumnie user_id.

Jak wiadomo rekord zwracany jest w postaci tablicy, a ja nie chcę sobie robić bałaganu w kodzie i używać pętli foreach, jak najłatwiej wyciągnąć tylko tą jedną kolumnę z tego rekordu?
Niktoś
A po co ponowne wyszukiwanie id jeśli podajesz id w celu wyszukiwania już na samym początku?
Cytat
$id = $this->request->param('id');
Pytajka
Cytat(Niktoś @ 17.05.2012, 21:56:29 ) *
A po co ponowne wyszukiwanie id jeśli podajesz id w celu wyszukiwania już na samym początku?


To nie id tylko klucz aktywujący, raczej widać.
skowron-line
Osobiście nie używam ORM
mogę podrzucić tylko
http://kerkness.ca/kowiki/doku.php#orm
BlackDante
  1. $id = $this->request->param('id');


Jeżeli to jest klucz aktywujący to polecałbym nad przemyśleniem Routingu aplikacji, tak aby zmienne GET nie były myląco nazwane .

  1. $this->check = $this->active->where('key', '=', $id)->find_all();


Czy w Twojej aplikacji więcej niż jeden użytkownik może mieć ten sam klucz aktywacyjny ? Według mnie to jest trochę bez sensu, ponieważ wystarczy że jeden z tych wszystkich użytkowników aktywuje konto, a wszyscy pozostali dostaną za darmo aktywację wraz z nim.

Według mnie idealnym rozwiązaniem byłoby coś takiego:

  1. public function action_activate()
  2. {
  3. $activate_key = $this->request->param('activate_key');
  4. $active_rekord = ORM::factory('active',array('key' = $activate_key));
  5. if($active_rekord->loaded())
  6. {
  7. $role = new Model_Role( array('name' => 'login'));
  8. $user = ORM::factory('user', $active_rekord->user_id);
  9. $user->add('roles', $role);
  10. }
  11. else
  12. {
  13. die("This key doesn't exist");
  14. }
  15. }


Czyli każdy użytkownik dostaje swój unikalny klucz aktywujący, wszystko staje się wtedy o wiele prostsze wink.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.