Много геттеров и сеттеров в модели - PullRequest
1 голос
/ 06 марта 2011

Я использую CodeIgniter для приложения, которое пишу, и у меня возник вопрос относительно моделей.

То, что я пытаюсь выяснить, это то, должен ли я иметь метод получения и установки для каждого поля в базе данных, или я должен просто вытянуть всю строку и просто захватить нужный мне столбец внутри PHP,Я чувствую, что наличие целой связки получает и устанавливает, может привести к тому, что кто-то сделает много ненужных вызовов в базу данных.Так я думаю об этом неправильно или правильно?Должно ли каждое поле БД иметь свой собственный get / set или это пустая трата?

Ответы [ 2 ]

2 голосов
/ 06 марта 2011

Как обычно, «это зависит».Это зависит от того, где вы собираетесь использовать результаты.Обычно ваши запросы должны попадать в базу данных только для тех полей, которые нужны каждому запросу.например, «выбрать field1, field2 из mytable» вместо «select * from mytable».Затем используйте функциональность CodeIgniters, чтобы получить значения полей - например,

$items = $query->result();
foreach ($items as $item) {
  $x = $item->field1;
  $y = $item->field2;
}

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

Вы также можете попытаться реализовать некоторую форму «отложенной загрузки», при которой вы передаете некоторые / большую часть данных в исходный объект, а затемметод запрашивает другие данные поля, метод геттера делает еще один запрос к базе данных для получения новой информации.Но это может быть намного сложнее.

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

В любом случае - сделайте запрос вернувшим то, что нужно.

0 голосов
/ 06 марта 2011

Я еще не использовал CodeIgniter, но это, вероятно, более общий вопрос. Я считаю, что нет ничего плохого или правильного.

Если ваши данные нуждаются в некоторой проверке или очистке перед входом в базу данных, использование установщиков было бы хорошим решением. Кроме того, если ваши необработанные данные нуждаются в преобразовании перед использованием в приложении, вы, вероятно, будете использовать геттеры, чтобы избежать ненужного дублирования кода.

В противном случае, я думаю, что абсолютно нормально тянуть строки, даже в CodeIgniter User Guide они это делают.

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