codeigniter где обработать sql результат? - PullRequest
1 голос
/ 23 февраля 2011
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. В контроллере я обрабатываю данные, подготавливаю их к отображению. В виду, есть место только для 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 голосов
/ 23 февраля 2011

Я думаю, вы поняли идею. Подход MVC не всегда означает его лучшую оптимизацию.

Генерация данных в модели, передача их в контроллер, а затем в представление является правильным способом сделать это, даже если бы казалось, что вы могли бы просто сделать все это из представления с таким же количеством строк код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...