在codeigniter中,可以在视图文件中编写查询

时间:2014-01-30 07:29:32

标签: php mysql codeigniter

是否可以在CodeIgniter的视图文件中编写查询? 像下面的代码一样。

<?php

    $query= $this->webpages->get_where_custom('parent_id',0);
       foreach($query->result() as $row){
          $query1=$this->webpages->get_where_custom('parent_id',$row->id);
               foreach($query1->result() as $row1){
                   $row1->id;
               }
       }
?>

4 个答案:

答案 0 :(得分:2)

查询运行没有任何问题。

但是,在模型中为您执行查询任务的函数可以在应用程序的任何位置同时使用。

您的视图文件也是一个PHP文件,并且能够使用配置文件中的设置连接到数据库,但它实际上并不符合MVC模式的概念。

您可以使用AJAX Calls在视图文件中获取所需的数据!

注意:在这种情况下,由于查询未从模型运行,因此database类必须为autoloaded或加载到控制器中而不是模型中。

答案 1 :(得分:0)

为什么要在视图文件中显示查询?

无论如何,要打印上次执行的查询:

echo $this->db->last_query();

答案 2 :(得分:0)

是的,您可以在视图中编写查询,但它不是标准的,也可以在控制器中编写,但模型最适合查询执行。如果在视图中运行查询,那么在正常应用程序和基于MVC的模式应用程序中没有任何区别,您可以在其中分离数据库操作的模型,查看视图和控制器以控制模型和视图。

简单的控制器是模型和视图的桥梁。因此,最好的方法是在模型中编写查询而不是控制器或视图。

请记住$this关键字在视图中不起作用,因为当我们创建模型或控制器时,我们扩展了类class My_model extends CI_model OR class My_controller extends CI_Controller所以{{1}引用当前方法或对象,因此如果不扩展模型或控制器,则不能使用模型或控制器函数,因此$this关键字在不扩展模型或控制器类的情况下将无法工作。

答案 3 :(得分:-1)

你可以试试这个......

<?php
 $CI =& get_instance();
 $query= $CI->webpages->get_where_custom('parent_id',0);
   foreach($query->result() as $row){
      $query1=$CI->webpages->get_where_custom('parent_id',$row->id);
           foreach($query1->result() as $row1){
               $row1->id;
           }
   }
?>

这不符合MVC规则,但它是可能的。