2011-06-24 3 views
1

У меня есть модель Элемент с соответствующей таблицей элементами и полями (поле1, поле2 и т. Д.).CakePHP paginate 'virtual' field

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

Обе модели связаны как ПунктhasManyКомментарий и КомментарийbelongsToItem.

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

Чтобы сделать это, я полагаю, мне нужно 2 вещи:

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

Возможно ли это? Может ли кто-нибудь указать мне правильное направление, как это сделать? Или я должен просто добавить realitem_rating введите в мой список таблицу и обновите средний каждый раз, когда новый рейтинг добавляется пользователем?

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

ответ

1

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

Edit:

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

+0

эй спасибо за ссылку. Тем не менее, я получаю типичную ошибку «заголовки, уже отправленные .... aggregate_cache.php». Это файл в примере, поэтому я не знаю, может ли быть что-то не так, я использую его, как он есть. Вы знаете, что может быть неправильным? Или у вас есть альтернативное поведение или метод? –

+0

Хорошо, я просто исправил это, возникла проблема с копированием кода непосредственно с веб-страницы. Я скопировал его сначала в блокнот, а затем в мой редактор, и ошибка исчезла. Тем не менее, я не могу заставить его делать то, что должно делать ... –

+0

Это не мой код, и я не знаю деталей. См. Мой пересмотренный ответ для получения более подробной информации. –

 Смежные вопросы

  • Нет связанных вопросов^_^