CodeIgniter Helper Functions 可以使用数据库函数吗?
Posted
技术标签:
【中文标题】CodeIgniter Helper Functions 可以使用数据库函数吗?【英文标题】:Can CodeIgniter Helper Functions use database functions? 【发布时间】:2013-04-08 20:26:34 【问题描述】:我的 CodeIgniter 控制器函数之一需要调用递归函数作为其功能的一部分。如果我把它放在控制器类中,函数调用会阻塞,如果我把它放在类之外,它就不能访问数据库函数($this->db->get())
。让它成为一个辅助函数会解决这个问题吗?
【问题讨论】:
请发布您的控制器代码。 为什么不直接使用模型呢?无论如何,这就是你的数据库交互应该去的地方。 【参考方案1】:你可以获得实例:
$CI =& get_instance();
之后,您将能够使用$CI->db
进行查询..
【讨论】:
太棒了,经过一番阅读,这正是我想要的。 为什么它被否决了?请让我们知道这有什么问题。 @svetoslav 但从 MVC 的角度来看这样做是正确的吗?只是想知道,我是新手 @gepex 这是 7 年前的答案。通常它不是我们今天通常看到的,我们可以说它是针对 MVC 的。然而,这是它在 CodeIgniter 直到 v4 的工作方式,可能是大约 10 年前编写的解决方案..(甚至更长时间)..【参考方案2】:如果你想在库、助手中使用 $this 并访问所有方法:
$this->ci =& get_instance();
$this->ci->load->database();
你也可以这样做:
$this->ci->config->item('languages');
或
$this->ci->load->library('session');
【讨论】:
这是一个很棒的主题,解释了如何在您知道要使用 get_instance() 后使用 get_instance()。【参考方案3】:我们可以在helper中定义一个函数
if (!function_exists('getRecordOnId'))
function getRecordOnId($table, $where)
$CI =& get_instance();
$CI->db->from($table);
$CI->db->where($where);
$query = $CI->db->get();
return $query->row();
我们可以像这样从视图中调用
$recordUser = getRecordOnId('users', ['id' => 5]); //here 5 is user Id which we can get from session or URL.
【讨论】:
【参考方案4】: //Select Data:
$this->db->select(‘fieldname seperated by commas’);
$this->db->from(‘table’);
$query = $this->db->get();
$results=$query->result() ;
//Joins:
$this->db->select(‘*’);
$this->db->from(‘table1′);
$this->db->join(‘table2′, ‘table2.id = table1.id’);
$query = $this->db->get();
我们可以从 http://skillrow.com/codeignitor-database-functions/
【讨论】:
以上是关于CodeIgniter Helper Functions 可以使用数据库函数吗?的主要内容,如果未能解决你的问题,请参考以下文章
codeigniter 覆盖表单助手中的 set_value 函数,使用 MY_helper 在获取时重新填充字段,同时发布