Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Cakephp连接条件错误_Sql_Cakephp_Join_Conditional Statements - Fatal编程技术网

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
model
var$hasMany='Posting'

Posting.php
model
var$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给出了很好的解释。运转良好