gpt4 book ai didi

php - 如何简化codeigniter中的模型函数

转载 作者:行者123 更新时间:2023-11-29 10:38:23 25 4
gpt4 key购买 nike

我创建了一个通用模型函数来从 Mysql 获取数据。我可以对所有选择的数据使用此函数。

//Controller

$where = array('user_id' => 1);
$data['all_rewards'] = $this->select->selectData('tbl_example1', $where, null, 'user_id', 10, 1);

//Model

public function selectData($table, $where, $group_by, $order_by, $limit, $start) {
$this->db->select('*');
$this->db->from($table);
if(!empty($where))
$this->db->where($where);
if(!empty($group_by))
$this->db->group_by($group_by);
if(!empty($order_by))
$this->db->order_by($order_by, 'DESC');
if(!empty($limit) or !empty($start))
$this->db->limit($limit, $start);

$query = $this->db->get();

return $query->num_rows() > 0 ? $query->result_array() : 0 ;
}

上面的代码工作正常。

只是我想知道除了我从数据库中选择数据的函数之外,还有其他简化的方法吗?以及我的做法是否正确。

最佳答案

一旦您的应用程序开始增长,我不确定这种方法是否能够生存。很快您就会遇到通用函数无法实现的选择查询(例如,如果您需要“选择类似”或仅选择某些字段而不是 (*),该怎么办)。

这实际上是一个关于如何创建良好的 MVC 架构的广泛问题。

更好的方法是,不要尝试编写一个通用函数来满足所有可能的选择语句,而是尝试为典型的简单查询编写速记函数,例如 SelectAll 或 SelectOne 或 SelectRow。

一般来说,模型应该实现一种访问系统中模型所表示的特定数据或数据库表的方法。如果您希望通用化查询,请考虑扩展 CodeIgniter 查询生成器,并根据需要在模型中使用扩展功能。

举例来说,您需要一个从表中获取单个字段的简写:

function selectOne($table, $field, $id){
$this->db->select($field);
$this->db->from($table);
$this->db->where('id', $id);
}

这个函数调用将非常具有可读性和自记录性:

selectOne('product', 'price', 5);

通过这种方式,您可以抽象出许多在应用程序中获取数据的典型方法。

关于php - 如何简化codeigniter中的模型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com