【问题标题】:CodeIgniter Models: only for database connection?CodeIgniter 模型:仅用于数据库连接?
【发布时间】:2015-09-13 00:14:37
【问题描述】:

最近,我刚加入一家公司。他们使用 CodeIgniter PHP,在模型函数内部,只允许查询数据库。不允许循环和其他用法这样做。

这与我所知道的不同。 应该这样吗?

【问题讨论】:

    标签: php codeigniter model-view-controller model


    【解决方案1】:

    是的,不是的,模型的主要作用是将数据库层抽象到框架中,所以理论上来说,你只会使用模型来查询数据库(带有活动记录类或原生 SQL)并将结果返回给控制器,但在模型中看到这样的代码并不罕见

    <?php
    //birds_model.php (Array of Strings)
    class Birds_model extends CI_Model{
      function get_bird($q){
        $this->db->select('bird');
        $this->db->like('bird', $q);
        $query = $this->db->get('birds');
        if($query->num_rows > 0){
          foreach ($query->result_array() as $row){
            $row_set[] = htmlentities(stripslashes($row['bird'])); //build an array
          }
          echo json_encode($row_set); //format the array into json data for the ajax call 
        }
      }
    } 
    

    代码参考:jquery-ui-autocomplete-in-codeigniter-with-database

    话虽如此,CodeIgniter 对 MVC 也有一种相当松散的方法,因为不需要模型。

    如果您不需要额外的分离,或者发现维护模型需要比您想要的更多的复杂性,您可以忽略它们并使用控制器和视图构建您的应用程序。

    CodeIgniter 还使您能够合并自己的现有脚本,甚至为系统开发核心库,使您能够以对您最有意义的方式工作。

    参考:CodeIgniter User Guide

    我希望能帮助你理解codeigniter背后的逻辑并且你会习惯它,并且只是为了让你知道例如opencart正在使用一个非常相似的MVC框架,所以学习codeigniter对于扩展你的MVC开发人员来说真的很好技能。

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2013-08-28
      相关资源
      最近更新 更多