CakePHP-страница «виртуальное» поле - PullRequest
1 голос
/ 24 июня 2011

У меня есть модель Элемент с соответствующей таблицей Элементы и поля (field1, field2 и т. Д.).

У меня есть другая модель, Комментарий, а также его таблица и поля.Одним из полей является item_rating , где пользователи вводят число от 0 до 10 для оценки элемента.

Обе модели связаны как Item hasMany Комментарий и Комментарий принадлежит Элемент .

При разбиении на страницы Элемент моделив представлении я хотел бы добавить поле item_rating вместе с его собственными полями, чтобы пользователи могли видеть среднюю оценку элемента и иметь возможность сортировки по item_rating , кромевсе остальные поля, которые принадлежат непосредственно Item .

Для этого, я полагаю, мне понадобятся 2 вещи:

  • Уметь создавать item_rating поле на лету со средним значением всех его оценок
  • Возможность добавить это поле к нумерации страниц, чтобы пользователи могли его видеть и сортировать по нему

Возможно ли это?Кто-нибудь может указать мне правильное направление, как это сделать?Или мне просто добавить поле real item_rating в мою таблицу items и обновлять среднее значение каждый раз, когда пользователь добавляет новый рейтинг?

Большое спасибо заранее!

1 Ответ

1 голос
/ 25 июня 2011

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

Edit:

Вы можете сделать такую ​​функцию самостоятельно. Просто создайте поле в родительской таблице, в котором будет храниться средний рейтинг. Затем в afterSave () в модели Rating добавьте функциональность, которая заполняет это поле в родительской таблице средним значением.

...