Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] $query->count() w konstruktorze nie działa
Forum PHP.pl > Forum > PHP > Frameworki
screamart
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?
bełdzio
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( );
kbsucha
Chyba zapomniałeś o:
Kod
public function __contruct($username)
{
  parent::__construct();
  (...)//dalsze czesc kodu
}
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.