Я пытаюсь выполнить запрос по двум таблицам HABTM.У меня Leases
Managers
Tenants
Properties
.
Managers
HABTM Tenants
Managers
HABTM Properties
Tenants
HABTM Leases
Я хочу find
список Properties
, связанный с Managers
, связанный с Tenant
.Я смог выполнить запрос с помощью кода ниже, НО я могу получить только 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
)
);
Любая помощь очень ценится.