Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Kohana] Pobranie id z rekordu?
Pytajka
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.09.2011

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


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.
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Nie bardzo wiem ocb ale możliwe że chodzi o metodę find która zwróci pierwszy rekod. No ale mogę się mylić.
Go to the top of the page
+Quote Post
Pytajka
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.09.2011

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


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?
Go to the top of the page
+Quote Post
Niktoś
post
Post #4





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


A po co ponowne wyszukiwanie id jeśli podajesz id w celu wyszukiwania już na samym początku?
Cytat
$id = $this->request->param('id');
Go to the top of the page
+Quote Post
Pytajka
post
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.09.2011

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


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ć.
Go to the top of the page
+Quote Post
skowron-line
post
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Osobiście nie używam ORM
mogę podrzucić tylko
http://kerkness.ca/kowiki/doku.php#orm
Go to the top of the page
+Quote Post
BlackDante
post
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 6
Dołączył: 20.06.2009

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


  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 (IMG:style_emoticons/default/wink.gif)

Ten post edytował BlackDante 18.05.2012, 15:04:56
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.08.2025 - 19:21