【问题标题】:How to query a database from view - CodeIgniter如何从视图中查询数据库 - CodeIgniter
【发布时间】:2010-01-15 23:11:48
【问题描述】:

我有在控制器中运行的查询:

$data['query'] = $this->Member->select_sql($id);    
$this->load->view('myform');

然后在视图中输出数据:

foreach ($query->result() as $row):
   echo $row->post_title;
   echo $row->post_user_id;
endforeach;

所以这会输出一个用户发布的帖子列表。现在我想再运行一个查询,该查询将为每个帖子循环遍历我的用户表并在每个帖子旁边输出用户信息。 (此时我不想在 MySQL 中从视图中选择数据或连接这两个表)

有什么想法吗?

【问题讨论】:

  • 我不确定这是不是一个好主意——MVC 的全部意义在于强制执行干净的代码结构。您不应该在视图中有业务逻辑。
  • 这仅用于测试目的,以关注性能。还是谢谢你。
  • @Veeti 从视图调用模型并没有错。见stackoverflow.com/questions/1973221/…

标签: php codeigniter


【解决方案1】:

虽然这不是一个好的做法,但“最干净”的方法如下:

  • 在视图中抓取 CI 实例
  • 加载包含所需数据提取查询函数的模型
  • 从视图中的模型运行函数

所以,在视图中:

$CI =& get_instance();
$CI->load->model('modelname');
$result = $CI->modelname->functionname();
var_dump($result);

经过测试并且可以正常工作。

【讨论】:

    【解决方案2】:

    将数据库适配器或适当的表对象注入到视图中。

    根据您上面的代码,我认为这是

    $data['userModel'] = $this->User;
    

    然后从那里使用它来运行您的查询,例如

    $user = $userModel->select_sql($row->post_user_id);
    

    【讨论】:

      【解决方案3】:

      简单

      <?php 
                              $qryd='select * from '.$tbname.'';
                              $queryd = $this->db->query($qryd);
                              $resultset = $queryd->result_array();
                          ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多