codeigniter在哪里处理sql结果?

时间:2011-02-23 11:52:06

标签: php sql codeigniter

class SelectedModel extends CI_Model {

    var $title   = 'SelectedModel';
    var $content = 'get top n articles';
    var $date    = '23.2.2011';

    function __construct()
    {
        parent::__construct();
    }

    function getTopArticles()
    {
       $result = $this->db->query('select top 5 article from articles;');
       if( ! $result->num_rows() > 0 )
           die('There are no articles in db.');

       return $result;
    }
}


class Front extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->database();
        $this->load->helper(array('text', 'html'));
        $this->load->model('SelectedModel');

        // controller process data and validate it
        $top_articles = $this->SelectedModel->getTopArticles();
        foreach($top_articles->result() as $item)
        {
            $item->desc = character_limiter($item->desc, 75);
            if( strlen($item->image) == 0 )
                $item->desc = '/images/default.png'; 
        }


        $data['title'] = 'title';
        $data['random_articles'] = $top_articles;
        $this->load->view('front', $data);
    }
}

前视图:

php foreach($random_articles->result() as $item):
    php echo $item->desc
    php echo br() . $item->image
php endforeach;

我想知道我对MVC的了解是否正确。在控制器I处理数据,准备他们在视图中显示它们。在视图中,只有html / css代码和echo $ var的空间。 模型函数是获取数据。

是否还有其他处理数据的方法。我的方式好吗?

优化问题: $ top_articles = $ this-> SelectedModel-> getTopArticles(); 我不知道php究竟是如何管理这一行的。我只是问$ top_articles是否是getTopArticles的副本,所以如果我在我的视图中使用,我会使用两倍的内存:

前视图:

php foreach($random_articles->result() as $item):
    php echo character_limiter($item->desc, 75)
    php echo br() . if( strlen($item->image) == 0 ) echo images/default.png''; else echo $item->image;
php endforeach;

但是使用这种方法我不使用MVC(在视图中使用character_limit,....)。

1 个答案:

答案 0 :(得分:0)

我认为你明白了这个想法。 MVC方法并不总是意味着它更好地优化。

在模型中生成数据,将其传递给控制器​​,然后传递到视图是正确的方法,即使看起来好像你可以从视图中完成所有操作码。