Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] $query->count() w konstruktorze nie działa
screamart
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 5
Dołączył: 11.04.2010

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


Od jakiegoś czasu eksperymentuję sobie z frameworkiem Kohana. Pisząc sobie klasę pod model logowania napotkałem pewne trudności. Początkowo aby szybko sprawdzić jak wygląda obsługa bazy w tym frameworku napisałem coś takiego:

  1. class Login_Model extends Model {
  2.  
  3. public $status;
  4. public $pw;
  5.  
  6. public function isUser($username)
  7. {
  8. $query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\"");
  9. return $query->count();
  10. }
  11. public function isActive($username)
  12. {
  13. $query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\"");
  14. foreach ($query->result_array() as $row)
  15. {
  16. $this->status = $row->isActive;
  17. }
  18. return $this->status;
  19. }
  20. public function checkPassword($username)
  21. {
  22. $query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\"");
  23. foreach ($query->result_array() as $row)
  24. {
  25. $this->pw = $row->password;
  26. }
  27. return $this->pw;
  28. }
  29. }


Wszystko działa ale rzecz jasna jest to złe rozwiązanie bo powtarzają mi się zapytania. Przerzuciłem więc zapytanie do kontruktora i przypisałem interesujące mnie wartości z bazy do atrybutów klasy. Problem w tym że metody które maja mi po prostu zwracać wartość np. ilości rekordów za pomocą $query->count() lądują w kontrolerze "puste" (nie 0, nie 1 itd). Jestem raczej początkujący więc mogłem sobie coś źle założyć. Przykład nieprawidłowo działającego kodu poniżej:

  1. class Login_Model extends Model {
  2.  
  3. public $numberOfRecords;
  4. public $query;
  5. public $status;
  6. public $pw;
  7.  
  8. public function __contruct($username)
  9. {
  10. $this->query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\"");
  11. $this->numberOfRecords = $query->count();
  12. foreach ($this->query as $row)
  13. {
  14. $this->status = $row->isActive;
  15. $this->pw = $row->password;
  16. }
  17. }
  18. public function isUser()
  19. {
  20. return $this->numberOfRecords;
  21. }
  22. public function isActive()
  23. {
  24. return $this->status;
  25. }
  26. public function checkPassword()
  27. {
  28. return $this->pw;
  29. }
  30. }


Ktoś wie dlaczego metody wykonujące zwykły return nie zwracają zupełnie nic?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
bełdzio
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


nadpisujesz konstruktor klasy Model przez co nie masz dostępu do obiektu db. Przed
Kod
$this->query = $this->db->query("S
daj
Kod
parent :: __construct( );


Ten post edytował bełdzio 11.12.2010, 11:55:38
Go to the top of the page
+Quote Post
kbsucha
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 19
Dołączył: 2.08.2007

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


Chyba zapomniałeś o:
Kod
public function __contruct($username)
{
  parent::__construct();
  (...)//dalsze czesc kodu
}
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: 23.08.2025 - 21:02