Sql Cakephp连接条件错误
我有两个表Sql Cakephp连接条件错误,sql,cakephp,join,conditional-statements,Sql,Cakephp,Join,Conditional Statements,我有两个表员工和发布 employees带有字段id,name 及 过账带有字段id,员工id,状态 现在,为了检索其posting.status=1的所有员工(带有张贴详细信息),我在postingscoontroller.php的视图()中写入了操作: $cond = array('Posting.status'=>1); $e = $this->Employee->find('all',array('conditions' => $cond)); $this->
员工
和发布
employees
带有字段id
,name
及
过账
带有字段id
,员工id
,状态
现在,为了检索其posting.status=1
的所有员工(带有张贴详细信息),我在postingscoontroller.php
的视图()中写入了操作:
$cond = array('Posting.status'=>1);
$e = $this->Employee->find('all',array('conditions' => $cond));
$this->set('emp',$e);
在Employee.php
modelvar$hasMany='Posting'代码>
在Posting.php
modelvar$belongsTo='Employee'代码>
但是上面的代码会生成如下错误:
错误:SQLSTATE[42S22]:未找到列:1054未知列
“where子句”中的“Posting.status”
生成的SQL:
SQL Query: SELECT `Employee`.`id`, `Employee`.`name` FROM `cakelab`.`employees` AS `Employee` WHERE `Posting`.`status` = 1
我是CakePhp新手,请指导我 当关系类型为hasMany时,Cake不会加入表。相反,它对第一个表(employees
)执行查询,并使用员工的id
,对postings
表执行第二次查询,以检索与该员工相关的所有过账
您可以手动加入这些表,但我建议您先查询过账表,然后按员工分组
$this->Posting ->find(
'all',
array(
'fields' => array('Employee.id', 'Employee.name', 'Posting.status' ),
'conditions' => $cond,
'group' => array('Employee.id')
)
);
请发布生成的SQL查询,该查询将为您提供error@arilia见我更新的问题两个可能的原因(我能想到):1。您在模型中有一些键入错误(在hasMany
或belongsTo
中)。2.您的recursive
选项在某个地方设置为-1。请复制粘贴模型的相关部分。另外,您提到您是cake's join的新手,如果没有专门使用,它对用户是透明的-您是否已经使用它了?Thyanks arilia给出了很好的解释。运转良好