creando campos virtuales sobre la marcha en CakePHP

Deseo crear campos virtuales sobre la marcha.

Mis pedidos y detalles de pedidos son como ...

//Order Model
class Order extends AppModel {
    public $name = 'Order';
    public $actsAs = array('Containable');
    public $hasMany = array(
        'OrderDetail' => array(
            'className' => 'OrderDetail',
            'foreignKey' => 'order_id',
            'dependent' => true
        ),
    );
}

//OrderDetail Model
  class OrderDetail extends AppModel {
    public $name = 'OrderDetail';
    public $actsAs = array('Containable');
    public $belongsTo = array(
        'Order' => array(
            'className' => 'Order',
            'foreignKey' => 'order_id',
            'dependent' => true
        ),
    );
}

La relación modelo es así. Estoy creando campos virtuales sobre la marcha para poder contar el número de artículos y su costo en la paginación de orden. Conozco la extraña forma derequestAction. Es de otra manera otra que pueda realizar mi tarea.

Mi código probado es

        $this->Order->virtualFields['totalCost'] = 0;
        $this->Order->virtualFields['totalItem'] = 0;
        $fields = array('Order.id', 'Order.order_key', 'Order.delivery_date','COUNT(`OrderDetail`.`order_id`) AS `Order__totalItem`', 'SUM(`OrderDetail`.`cost`) AS `Order__totalCost`');         

        $this->paginate['Order'] = array("fields"=>$fields, 'conditions' => array("AND" => array($condition, "Order.status" => 3)), 'limit' => '50', 'order' => array('Order.id' => 'DESC'));

Me termina con la columna mysql no encontrada.Unknown column 'OrderDetail.order_id' in 'field list'. No he puesto recursiva ni ha obligado a mi modelo a buscar otra cosa. ¿Por qué se genera este error? ¿Cómo puedo lograr mi objetivo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta