1

好的...首先我阅读了这篇文章..

http://net.tutsplus.com/tutorials/php/6-codeigniter-hacks-for-the-masters/

在第一个 hack 中,它说如果我将这些包含在我的config.php文件中:

function __autoload($class) {  
    if (file_exists(APPPATH."models/".strtolower($class).EXT)) {  
        include_once(APPPATH."models/".strtolower($class).EXT);  
    }  
}  

我不需要将我的模型类扩展到 CI_Model。

然后我试图$this->db->select('email')->from('users')->where('email', $email);在我的模型类中使用..CodeIgniter 告诉我找不到“db”属性。有没有人尝试过这个黑客并知道如何让它工作?

class User {

public $id;
public $email;
public $displayName;
public $password;

public static function search_by_email($email) {
    $user = new User;

    $user->db->select('email')->from('users')->where('email', $email);
    $query = $user->db->get();
    if ($query->num_rows()==0) {
        return false;
    }else {
        foreach ($query->result() as $key => $val) {
            $user->email = $val['email'];
            $user->displayName = $val['displayName'];
           return $user;
        }
    }
    return null;
}

当我在控制器中调用静态函数时,我使用:

        $user = User::search_by_email("xxx@gmail.com");

如果我不扩展用户,它会显示一个 CI 警告:Message: Undefined property: User::$db。如果我使用User extends CI_Model {},服务器将崩溃。

有人知道这种情况吗?


编辑:

然后我放弃了愚蠢的 Nettus 教程代码,感谢你们......但我的模型仍然无法正常工作:

class User extends CI_Model {

    public $id;
    public $email;
    public $displayName;
    public $password;
public function search_by_email($email) {

        $user = new User();

        $this->db->select('email')->from('users')->where('email', $email);
        $query = $this->db->get();
        if ($query->num_rows()==0) {
            return false;
        }else {
            foreach ($query->result() as $key => $val) {
                $user->email = $val['email'];
                $user->displayName = $val['displayName'];
               return $user;
            }
        }
        return null;
    }

在我的控制器中,我使用:

$this->load->model('User');

$user = $this->User->search_by_email("leo.niecn@gmail.com");

我的服务器仍然崩溃......我是否禁止像public $id在我的模型中那样编写类变量?

4

1 回答 1

1

这部分代码没有任何意义:

function __autoload($class) {  
   if (file_exists(APPPATH . "models/" . strtolower($class).EXT)) {  
       include_once(APPPATH . "models/" . strtolower($class).EXT);  
   }  
}  

只要您可以从文件夹autoload.php下加载模型,config或者在需要模型时执行以下操作:

$this->load->model('model_name');

然后只需调用您的函数。

于 2013-09-25T04:59:27.977 回答