我需要在查询条件中构建嵌套查询。
$wc = {"Structure.deleted":0,"StructureSub.code":"YV360"}
$this->Structure->bindUser();
$this->Structure->bindSubscriptions();
$n = $this->Structure->find('count', array('conditions' => $wc));
模型是这样的(模型类Structure.php
)
public function bindSubscriptions($options=array()) {
$options_default = array(
'conditions' => array('deleted'=>0),
'order' => array('created desc')
);
$options = array_merge($options_default,$options);
$this->bindModel(array(
'hasMany' => array(
'StructureSub' => $options
)
));
return $this;
}
public function bindUser($options=array()) {
$options_default = array(
'conditions' => array('User.deleted'=>0),
'foreignKey' => 'owner'
);
$options = array_merge($options_default,$options);
$this->bindModel(array(
'belongsTo' => array(
'User' => $options
)
));
return $this;
}
但查询执行时出错:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'StructureSub.code' in 'where clause'
SQL Query: SELECT COUNT(*) AS `count` FROM `db`.`structure` AS `Structure` LEFT JOIN `db`.`user` AS `User` ON (`Structure`.`owner` = `User`.`id` AND `User`.`deleted` = 0) WHERE `Structure`.`deleted` = 0 AND `StructureSub`.`code` = 'YV360'
StructureSub
的字段名为" code
"在数据库中。我不知道为什么User
表被包含为连接而StructureSub
不包含(我的意思是调用绑定方法)。
也许是因为有些行没有关系?
我的Cake php版本是2.5.6