DAO и модель?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
undsoft
Сообщения: 20
Зарегистрирован: 2009.09.16, 14:16

DAO и модель?

Сообщение undsoft » 2009.09.21, 19:09

Не очень понимаю.

Вот к примеру: по соображениям производительности я решил использовать DAO вместо Active Record. В Yii есть два типа моделей: формы и AR.

Как мне использовать модель и DAO? Или мне банально избавится от модели и все запросы к базе оставить в контроллере? Или как? :?

Аватара пользователя
samdark
Администратор
Сообщения: 9171
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: DAO и модель?

Сообщение samdark » 2009.09.22, 10:01

1. Использовать CModel, а не CActiveRecord.
2. Выносить запросы в модель в методы вроде getUserById($id) или getPosts($tag).

Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: DAO и модель?

Сообщение Ekstazi » 2009.09.22, 10:53

Только вот зачем ? У меня правда было пару раз, что нужно было запросы получения родительских категорий собрать на лету, и все это одним запросом надо. Если задача простая, то лучше cactiverecord применить, он довольно гибкий. А если нет, то добавить свои методы в CFormModel или CModel.

Аватара пользователя
samdark
Администратор
Сообщения: 9171
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: DAO и модель?

Сообщение samdark » 2009.09.22, 10:54

по соображениям производительности

Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: DAO и модель?

Сообщение Ekstazi » 2009.09.22, 17:16

Ну в таком случае на помощь приходит кэширование.

Аватара пользователя
undsoft
Сообщения: 20
Зарегистрирован: 2009.09.16, 14:16

Re: DAO и модель?

Сообщение undsoft » 2009.09.28, 13:07

Все равно не очень понимаю.
Получается я просто выношу все запросы к базе в модель - и все? Ничего такого особенного? Никаких мегакрутых присваиваний или валидации?

Насколько вобще имеет смысл использовать Дао вместо AR? Кто-нибудь может сказать, насколько от этого выиграет производительность?

Аватара пользователя
samdark
Администратор
Сообщения: 9171
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: DAO и модель?

Сообщение samdark » 2009.09.28, 13:10

Да, ничего мега крутого делать не надо. Просто будет код, относящийся к данным в одном месте, а не размазан по контроллеру. Удобно.

Когда имеет смысл использовать DAO вместо AR поймёте как только столкнётесь. О общем случае смысла нет.

Аватара пользователя
undsoft
Сообщения: 20
Зарегистрирован: 2009.09.16, 14:16

Re: DAO и модель?

Сообщение undsoft » 2009.09.30, 16:14

А может у кого-нибудь есть какой-нибудь пример кода?

Потому что меня несколько путает наследование от CModel - ведь по-прежднему есть атрибуты, правила для валидации и не очень понятно, как это все связать с простыми методами вида getUserById($id).

Аватара пользователя
samdark
Администратор
Сообщения: 9171
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: DAO и модель?

Сообщение samdark » 2009.09.30, 16:47

Вообще CModel — это не привязанная ни к чему модель. т.е. валидацию проводить можно точно так же, но как быть с данными и где их хранить определяете уже сами.

В вашем случае от CModel можно не наследоваться.

Ответить