class Login_Model extends Model { public $status; public $pw; public function isUser($username) { $query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\""); return $query->count(); } public function isActive($username) { $query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\""); foreach ($query->result_array() as $row) { $this->status = $row->isActive; } return $this->status; } public function checkPassword($username) { $query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\""); foreach ($query->result_array() as $row) { $this->pw = $row->password; } return $this->pw; } }
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:
class Login_Model extends Model { public $numberOfRecords; public $query; public $status; public $pw; public function __contruct($username) { $this->query = $this->db->query("SELECT * FROM `users` WHERE name = \"".$username."\""); $this->numberOfRecords = $query->count(); foreach ($this->query as $row) { $this->status = $row->isActive; $this->pw = $row->password; } } public function isUser() { return $this->numberOfRecords; } public function isActive() { return $this->status; } public function checkPassword() { return $this->pw; } }
Ktoś wie dlaczego metody wykonujące zwykły return nie zwracają zupełnie nic?