Когда DAO, а когда Active Record
Когда DAO, а когда Active Record
Так до конца и не понял, есть разные куски сайта которые взаимодействуют с БД, просто напишите плз для каждого конкретного из вариантов что лучше использовать DAO или AR:
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
Re: Когда DAO, а когда Active Record
1) DAOxoma_204 писал(а):Так до конца и не понял, есть разные куски сайта которые взаимодействуют с БД, просто напишите плз для каждого конкретного из вариантов что лучше использовать DAO или AR:
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
2) AR
3) AR
4) AR
Re: Когда DAO, а когда Active Record
Спасибо, а можно вкратце прокоментировать для каждого почему имено так?Я слышал что DAO быстрее, и мне казалось для 3 пункта лучше DAO, ведь тогда страница будет быстрее грузится, почему имено AR?zelenin писал(а):1) DAOxoma_204 писал(а):Так до конца и не понял, есть разные куски сайта которые взаимодействуют с БД, просто напишите плз для каждого конкретного из вариантов что лучше использовать DAO или AR:
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
2) AR
3) AR
4) AR
со 2 и 4 более менее понятно, для записи в бд всегда используем AR
Последний раз редактировалось xoma_204 2014.03.11, 22:14, всего редактировалось 1 раз.
Re: Когда DAO, а когда Active Record
если делаем тяжелую выборку быстрее будет DAO (да вообще оно будет быстрее). Но для выборки одной/нескольких сущностей УДОБНЕЕ пользоваться AR.
Re: Когда DAO, а когда Active Record
Ну вот смотрите есть страница пользователя, там сразу идет выборка: аватарки, фотографий, города проживания, друзей, пола,zelenin писал(а):если делаем тяжелую выборку быстрее будет DAO (да вообще оно будет быстрее). Но для выборки одной/нескольких сущностей УДОБНЕЕ пользоваться AR.
Т.е куча различных связанных таблиц.
Все равно AR?
К тому же в доках читаю
Или я чего то не понимаю?Лучше всего использовать AR для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. В сложных случаях следует использовать Yii DAO.
Re: Когда DAO, а когда Active Record
ничего страшного - выборка одной сущности с несколькими джойнами. Не думаю, что у вас там что-то тяжелое будет.xoma_204 писал(а):Ну вот смотрите есть страница пользователя, там сразу идет выборка: аватарки, фотографий, города проживания, друзей, пола,zelenin писал(а):если делаем тяжелую выборку быстрее будет DAO (да вообще оно будет быстрее). Но для выборки одной/нескольких сущностей УДОБНЕЕ пользоваться AR.
Т.е куча различных связанных таблиц.
Все равно AR?
Re: Когда DAO, а когда Active Record
Что тогда значит сложные случаи? можно пару примеров?Лучше всего использовать AR для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. В сложных случаях следует использовать Yii DAO.
Re: Когда DAO, а когда Active Record
выборка сотен-тысяч чего-то, с несколькими джойнами - множество моделей, занимающих много памяти.xoma_204 писал(а):Что тогда значит сложные случаи? можно пару примеров?Лучше всего использовать AR для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. В сложных случаях следует использовать Yii DAO.
Профиль пользователя - модель Пользователя, связанная модель Данных Пользователя, если выносите данные в отдельную таблицу. Что там еще может быть? 2 модели всего.
Re: Когда DAO, а когда Active Record
а еще не забывайте пользоваться грамотно кешем и запросы оптимизировать. Обычно это лучше ускоряет
И вообще, как я понимаю, то основная разница между АР и ДАО - это, что в пером случае формируется тяжелый массив со всеми связями, поведениями и тд, а ДАО просто вернет в виде массива выборку из бд.
И вообще, как я понимаю, то основная разница между АР и ДАО - это, что в пером случае формируется тяжелый массив со всеми связями, поведениями и тд, а ДАО просто вернет в виде массива выборку из бд.
Re: Когда DAO, а когда Active Record
так и есть.IvanChe писал(а):а еще не забывайте пользоваться грамотно кешем и запросы оптимизировать. Обычно это лучше ускоряет
И вообще, как я понимаю, то основная разница между АР и ДАО - это, что в пером случае формируется тяжелый массив со всеми связями, поведениями и тд, а ДАО просто вернет в виде массива выборку из бд.
А кэширование в БД превращает тяжелый запрос на легкий на время кэширования.