0
我想跨兩個HABTM表進行查詢。我有Leases
Managers
Tenants
Properties
。這是一個非常糟糕的方式來跨多個HABTM模型進行查詢嗎?
Managers
HABTM Tenants
Managers
HABTM Properties
Tenants
HABTM Leases
我想要做的就是find
掛Tenant
掛Managers
的Properties
列表。我已經能夠完成下面的代碼查詢,但我只能檢索Property_id
(從Managers_Property
模型)而不是Property.name
(從Property
模型)。
我得到了嘮叨的感覺,我正在做一些非常錯誤或不必要的事情,但我一直在撞牆撞牆,一直無法弄清楚。
$conditionsSubQuery['`ManagersTenant`.`tenant_id`'] = $this->Auth->User('id');
$dbo = $this->Lease->getDataSource();
$subQuery = $dbo->buildStatement(
// SELECT `ManagersTenant`.`manager_id` FROM `managers_tenants` AS `ManagersTenant` WHERE `ManagersTenant`.`tenant_id` = $this->Auth->User('id')
array(
'fields' => array('`ManagersTenant`.`manager_id`'),
'table' => $dbo->fullTableName($this->Lease->LeasesManager->Manager->ManagersTenant),
//'table' => $dbo->fullTableName($this->Lease->Property->ManagersProperty->Manager->ManagersTenant),
'alias' => 'ManagersTenant',
'limit' => null,
'offset' => null,
'joins' => array(),
'conditions' => $conditionsSubQuery,
'order' => null,
'group' => null
),
$this->Lease->LeasesManager->Manager->ManagersTenant
//$this->Lease->Property->ManagersProperty->Manager->ManagersTenant
);
$subQuery = ' `ManagersProperty`.`manager_id` IN (' . $subQuery . ') ';
$subQueryExpression = $dbo->expression($subQuery);
$conditions[] = $subQueryExpression;
$properties = $this->Lease->Property->ManagersProperty->find('list', array(
'conditions' => $conditions,
'fields' => array('property_id',),
'recursive' => 3
)
);
任何幫助,非常感謝。
中可容納不會讓我指定「遠」表查詢條件。 – Ben 2011-11-01 15:02:21