我是新的编码点火器。我想在一个单独的类函数中执行所有的数据库查询,只是为了重用。类似于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/