我是新的编码点火器。我想在一个单独的类函数中执行所有的数据库查询,只是为了重用。类似于JAVA spring框架。
示例:我需要不同控制器中所有用户的列表。为此,在单独的类函数中编写了getAllUser()的查询。之后我可以从不同的控制器调用它
这是我试图实现目标的代码
这是我的服务班

class UserManagementServices extends CI_Controller {
    public static function getAllUsers(){
        $this->load->database();
        return $this->db->query("SELECT * FROM users");
    }
    public static function getUser($userId){ ... }
    public static function removeUser($userId){ ... }
    public static function getUserHistory($userId){ ... }
}

这将是我的控制器类
class User extends CI_Controller {
    public function index(){
        $this->load->view('userHome');
    }
    public function viewAllUser(){
        include 'application/controllers/UserManagementService.php';
        var_dump(UserManagementService::getAllUsers());
    }
}

但这段代码不起作用。
在CodeIgniter中,它不允许我在静态方法中执行查询。
我试过这个的时候
class UserManagementServices extends CI_Controller {
    public static function getAllUsers(){
        return 'Testing Purpose...';
    }
}

而且效果很好。

最佳答案

首先,静态方法没有任何可用的CI内容。所以用数据库做点什么是行不通的。其次,CI中的控制器通常映射到uri,因此最好仅以这种方式使用它们。
如果您有一些可重用的代码,那么您需要创建一个助手或库。您可以将它们存储在一个单独的文件夹中,然后加载库,例如:$this->load->library('class_name');然后按如下方式访问它们:$this->class_name->method();
但这并不适用于你的数据库。数据访问由您的模型(duh)处理。您以与库非常相似的方式创建它们,这在CI文档中得到了很好的解释,您应该阅读:http://ellislab.com/codeigniter/user-guide/index.html

关于php - 如何在Codeigniter的单独类函数中执行SQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20976028/

10-11 03:32
查看更多