возможно, если вы установите рекурсивный атрибут равным 2, только если установлен vendor_id:
if(!empty($this->data['Order']['vendor_id'])) {
$this->paginate['recursive'] = 2;
$conditions['Product.vendor_id']=$this->data['Order']['vendor_id'];
}
if(!empty($this->data['Order']['startdate'])) {
$conditions['Order.date >=']=$this->data['Order']['startdate'];
}
if(!empty($this->data['Order']['enddate'])) {
$conditions['Order.date <=']=$this->data['Order']['enddate'];
}
$this->paginate['conditions'] = $conditions;
$this->paginate['order'] = 'Order.id ASC';
Или, если вы хотите, вы можете установить рекурсивное значение -1 и создать объединения вручную ... что-токак:
$this->paginate = array('fields'=>'Order.*',
'conditions'=>$conditions,
'joins'=>array( array( 'table' => 'orderitems',
'alias' => 'Orderitem',
'type' => 'INNER',
'conditions' => array('Order.id = Orderitem.order_id')),
array( 'table' => 'products',
'alias' => 'Products',
'type' => 'INNER',
'conditions' => array('Product.id = Orderitem.product_id',
'Product.vendor_id'=>$this->data['Order']['vendor_id'])));
Надеюсь, это поможет, удачи