在 Codeigniter 中处理 MySQL 查询的位置


where to process mysql queries in codeigniter?

我们应该在CodeIgniter应用程序中的什么地方处理mysql查询?
例如,在一个简单的项目中,我们这样做:

对于控制器:

class Blog extends CI_Controller {
    function posts(){
        $data['query'] = $this->blog_model->index_posts();
        $this->load->view('blog_view', $data);
    }
}

并着眼于:

<?php
while ($post = mysql_fetch_object($query)):
?>
<div>
    <p><?= $post->body; ?></p>
</div>
<?php endwhile; ?>

但是,如果我们想在打印前对帖子正文做一些事情,应该在哪里做?
例如,我想编写一个函数来格式化 post 的正文,并在执行 echo 之前将正文传递给它。

根据CoeIgniter的结构和推荐的做法,它应该放在哪里?(最佳选择)

  • 在控制器中?(如果是这样,如何使用它)
  • 在视图中?
  • 写一个助手?
  • 其他方法 ?

以下是建议的内容:

控制器:

function posts() {
   $this->load->model("blog_model");
   $data['rows'] = $this->blog_model->index_posts(); 
   $this->load->view("blog_view", $data);
}

型号: (blog_model.php)

function index_posts() {
   $this->load->database();
   $query = $this->db->get('your_table');
   $return = array();
   foreach ($query->result_array() as $line) {
      $line['body'] = ... do something with the body....
      $return[] = $line;
   }
   return $return;
}

查看: (blog_view.php)

<?php foreach ($rows as $line): ?>
<div>
<p><?php echo $line['column']; ?></p>
</div>
<?php endforeach; ?>

基本上,您的模型返回一个多维数组,该数组通过视图并使用foreach()循环进行处理。

祝你好运!

如果要

重用该函数,请创建一个帮助程序。如果您只需要此函数一次,请将其放入控制器并从该控制器调用。

模型仅用于访问数据库,或者在少数其他情况下,但主要用于访问数据库中的内容或编辑、删除等,并将结果发送到控制器进行进一步处理。

在你的情况下,我会坚持使用助手。

例如,您将创建一个文件top_mega_best_functions.php并将其放在帮助程序文件夹中。

比你写的,例如类似的东西

function red_text($input) {
    echo '<span style="color: red;">';
    echo $input;
    echo '</span>';
}

然后在自动加载器文件中加载帮助程序,或者在使用前加载。

并在您的视图或控制器中使用,例如

$blablabla = "This text will be red";
red_text($blablabla);