Как стать автором
Обновить

Комментарии 19

Спасибо, но не подскажите, зачем вы это делаете?
if ($Q- > num_rows() > 0){
foreach ($Q- > result_array() as $row){
$data[] = $row;
}


Я например возвращаю $q->result() или $q->row()
if ($Q- > num_rows() > 0){
foreach ($Q- > result_array() as $row){
$data[] = $row;
}

Проверяет количество возвратившихся строк. Если их больше 0, то выполняем foreach. Если этой проверки не дулеть, то foreach будет вызывать ошибку, если у вас не будет записей в блоге.

Шорошо бы еще во View перед выводом записей проверить пуст ли массив $entries.
Зачем в модели делать foreach и проверять на пустоту?
По моему этого вполне достаточно сделать во вьюшке или я не прав?
ну это кому как удобнее, Я на пример проверки все старюсь выносить из вьюшек
$data[‘entries’] = $this-> MBlog-> getAllEntries();

В переменную $entries будет записан массив данных, т.к. функция getAllEntries() возвращяет записи в виде массива.

На стороне Модели должны проводиться все манипуляции по выборке, проверке, подготовке данных для передачи во View. Во View мы их просто выводим.
Но вам всё равно придётся сделать проверку на пустоту либо во вьюшке, либо в контроллере.
На самом деле меня больше беспокоит foreach, зачем он?
Проверили мы что он не пустой, зачем гнать всё это через foreach, не проще вернуть $q->result()?
Действительно можно и так сделать.
На пустоту кстати, также не обязательно проверять, если возвращается $q->result() и не оказалось данных, соответствующих выборке, то массив будет пустой.
Не путайте $q->result() с $q->result_array()? первый возвращает объект, второй массив…

но все равно

foreach ($Q- > result_array() as $row){
$data[] = $row;

можно заменить на $data = $Q- > result_array();
Я не путаю, просто дал совет, как я использую.
У вас не было проблем с сериализацыей данных объектов? я в нутри моделей тоже использую объекты, а вот если данные отправляться за пределы модели то там только массивы, мало как там данные используются…
Кхм, пока не встречал.
А можно ситуацию, при которой может возникнуть подобная проблема?
2. Записи блога из базы данных будут помещены в $data[‘navlist’] с помощью Модели MBlog.


$data[‘entries’] = $this-> MBlog-> getAllEntries();


поправте…
Спасибо.
Если не затруднит перенесите топик в блог CodeIgniter. Заранее спасибо :)
перенес
Здравствуйте!

Я понимаю, что пост старый, но прошу его поправить. Рисунок схемы Модель-Вид-Контроллер несколько неточен, как минимум он противоречит вашему же высказыванию

"… Допустим пользователь заходит на нашу страницу. В этот момент Контроллер вызывает Модель, которая возвращает последние 10 записей. Далее данные передаются из Контроллера в Представление, которое выводит страницу пользователю..."

На схеме не видно, что данные передаются из Контроллера в Представление, не показано, что Контроллер хоть как-то связан с Представлением.

Зато видно, что Модель непосредственно взаимодействует с Представлением, что, согласно принципу MVC, недопустимо.

Даю ссылку на более правильную схему, которая соответсвует вашей статье

i.piccy.info/i4/d7/5f/2c11106d06e13cec1372c9338d53.png

Просьба заменить рисунок, чтобы не вводить MVC-новичков в заблуждение.
Спасибо. Поправил.
Вообще-то, Модель напрямую влияет на предстваление.
С сокращении MVC, Controller — это Front Controller, т.е. получает и обрабатывает запросы пользователя, а модель формирует представление.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории