codeigniter - Codeigniter,如何重用模型中的功能
问题描述
我仍在学习 MVC 方法,我对正确使用有疑问。
如何转换下面的函数以便我可以重用它:
老情况(每次调用这个函数,都可以指定不同的表名):
foreach ($client_data->fetch_all("gender") as $aRow):
codeigniter 的新情况:
功能视图:
<?php foreach($fetch_all->result() as $o) : ?>
功能控制器:
public function load_client_data() {
$client_id = $_POST['id'];
$client_data = $this->user_model->get_client_data($client_id);
$fetch_all = $this->user_model->fetch_all();
$this->template->loadAjax("clients/client_data.php", array(
"client_data" => $client_data,
"fetch_all" => $fetch_all)
);
功能型号:
public function fetch_all() {
return $this->db->get();
}
新情况下的代码可以正常工作,但是如何传递表名,以便可以像在旧情况下一样重用 fetch_all 函数。
我有一个包含 20 个选择选项的表单,现在我必须为每个选择选项创建 20 个不同的函数来检索数据,而不是只用另一个表名调用一个函数。我尝试了不同的选择,但不是我想要的结果。我该如何处理?
解决方案
- 您需要在
application/core
文件夹中创建一个 base_model。 - 在那里
base_model
,您需要定义所有通用函数,如 fetch_all、get_one、get_based_on_id 等 - 在每个模型中,您需要 2 两件事,从 base_model 继承并设置一个名为
tablename
或其他适合您的参数,您可以在其中设置要为其定义模型的确切表名 - 现在在控制器中,您将加载模型并调用 base_model 的函数,例如您加载了
User
模型,您将调用如下$this->User->fetch_all()
- Al 想法
fetch_all
在 base_model 中定义,它会起作用
如果您需要更多信息,请告诉我。
推荐阅读
- mysql - WHERE (a OR b) AND (c OR d) 子句出错
- python - Tensorflow - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)
- javascript - 除了 $mounted 之外,无法访问 Vue 组件的 $el
- npm - 如何为 ijavascript 安装 npm 模块
- steganography - 如果我收到消息数据流错误,如何打开 gz 文件?
- python-3.x - 如何通过列值范围的caparison提取行
- c - 为什么为 scanf 输入设置多个句点会跳过下一个 scanf 函数?
- mysql - SQL查询查找居住在同一城市的雇员姓名
- jquery - 解决 Odoo 12 中移动 Safari 浏览器上的 JS 语法错误
- hyperledger-fabric - 如何将cryptogen工具生成的密钥与fabric CA同步