Возврат запроса или результата в Codeigniter - PullRequest
0 голосов
/ 03 сентября 2011

Каковы плюсы и минусы выборки базы данных и возврата объекта запроса или результата / массива результата / результата?

$query = $this->db->get('mytable');
return $query;

против

$query = $this->db->get('mytable');
return $query->result; //or result_array()

Я знаю, что если вы вернетеОбъект запроса позволяет разработчику выбирать любой тип ресурса, который он хочет.Но это может привести к большей двусмысленности в разработке кода.

Что считается наилучшей практикой?

Ответы [ 3 ]

2 голосов
/ 03 сентября 2011

Полагаю, это зависит от того, что вам нужно с ним сделать, обработать его дальше или показать пользователю. Если простые результаты нужно отображать в представлении, я бы лучше вернул результат, в противном случае, если требуется более «сложная» обработка, вы можете вернуть объект запроса.

1 голос
/ 03 сентября 2011

Вы должны вернуть объект результата или массив, потому что позже вы можете изменить его и добавить больше данных без изменения поведения функции.

Позвольте мне привести пример:

getTopic ($id) предположим, что эта функция возвращает все темы, основанные на идентификаторе курса для некоторых программ курса.Позже вы можете захотеть подсчитать и соответствующие темы.В случаях, когда вы возвращаете объект результата или массив, это легче сделать;просто добавьте еще один индекс.

Кроме того, если вы просто хотите получить объект запроса, вызывайте его прямо из контроллера, что необходимо для маршрутизации через функцию.Вызов функции означает, что вы хотите обработанные данные (сейчас или позже), а не прямой вывод из запроса.

0 голосов
/ 02 апреля 2014

Я предпочитаю передавать объект запроса, потому что он может быть передан непосредственно в $this->table->generate($query), и он будет включать заголовки столбцов, тогда как если вы передадите result() или result_array(), вы потеряете заголовки.

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