Использование связанных моделей столбцов для виртуальных полей? - PullRequest
0 голосов
/ 09 августа 2011

У меня есть Пользователь модель и Заказ модель.Пользователь hasMany Order.

Таблица заказов имеет столбец user_id, а также столбец итогов.

Я хотел бы иметь virtulField для модели User, котораяэто количество заказов, связанных с этим пользователем.

Я также хотел бы иметь виртуальное поле на Пользователе, которое является суммой всех итогов.

Единственный способ, которым я смог заставить это работать, заключается в следующем:

public $virtualFields = array(
    'total_orders' => '(SELECT COUNT(orders.user_id) FROM orders WHERE orders.user_id = User.id AND orders.status != "void" GROUP BY orders.user_id)',
    'total_sales' => '(SELECT SUM(orders.total) FROM orders WHERE orders.user_id = User.id AND orders.status != "void" GROUP BY orders.user_id)',
);

Я не уверен, что это лучшее решение, есть ли лучший способ?

1 Ответ

0 голосов
/ 09 августа 2011

для общего заказа: используйте counterCache с counterScope: http://book.cakephp.org/view/1033/counterCache-Cache-your-count

вам все еще нужно VirtualField для общего объема продаж.

...