Доступ к данным из view

Обсуждаем, как правильно строить приложения
Ответить
vitkvit
Сообщения: 5
Зарегистрирован: 2013.08.13, 18:43

Доступ к данным из view

Сообщение vitkvit »

Считаю вполне уместным код во вьюхах:

... = Category::find()
->selectFormattedName()
->enabled()
->indexBy('id')
->orderBy('name')
->column();

По сути, это вызов процедур selectFormattedName(), enabled().
Названия полей id, name меняться не будут. Зачем это все выносить? На мой взгляд, будет ненужное усложнение.
Просьба поделится опытным по этому поводу.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Доступ к данным из view

Сообщение maleks »

Я бы все такие выборки вынес в отдельный класс Репозитория как мы обсуждали тут.
Чтобы :
- все выборки были в одном месте
- иметь возможность назвать метод как то осмысленно, кто сейчас догадается для чего эта выборка?
- вьюхи не зависели от БД.
Yii2 universal module sceleton - for basic and advanced templates
vitkvit
Сообщения: 5
Зарегистрирован: 2013.08.13, 18:43

Re: Доступ к данным из view

Сообщение vitkvit »

Ого, там смотреть и смотреть...
Спасибо за ответ, обязательно почитаю...
- все выборки были в одном месте
выборок бывает очень много, не получится ли каша?
- иметь возможность назвать метод как то осмысленно, кто сейчас догадается для чего эта выборка?
разве Category::find()->selectFormattedName()->enabled() не дают осмысленное название?
- вьюхи не зависели от БД.
по моему зависимость от базы внутри Category::find(), или что-то другое имеется ввиду?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Доступ к данным из view

Сообщение maleks »

Там все смотреть не надо.
То черновой вариант, первая версия. Вы только про репозиторий посмотрите.
- можно же разные репозитории заводить. Каша - это когда во вьюхах кучи непонятных выборок
- Осмысленное название - это чтобы не программист понял что тут выводится
- Ну весь вот этот код построения запроса написан на уровне работающем с БД - orderBy, column...
Yii2 universal module sceleton - for basic and advanced templates
Ответить