【问题标题】:Cakephp join condition errorCakephp 加入条件错误
【发布时间】:2014-04-30 11:26:11
【问题描述】:

我有两张桌子employeesposting

employees 带有字段id,name

postings 字段为id,employee_id,status

现在检索我在PostingsController.phpview() 操作中写的Posting.status = 1 的所有员工(带有发布详细信息):

$cond = array('Posting.status'=>1);
$e = $this->Employee->find('all',array('conditions' => $cond));
$this->set('emp',$e);

Employee.php 模型var $hasMany = 'Posting';

Posting.php 模型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 的新手,请指导我。

【问题讨论】:

  • 请发布产生该错误的 SQL 查询
  • @arilia 查看我更新的问题
  • 两个可能的原因(我能想到的): 1. 模型中有一些输入错误(在hasManybelongsTo 中)。 2. 您的recursive 选项在某处设置为-1。请复制粘贴模型的相关部分。另外,您提到您是 cake 连接的新手,如果不专门使用它对用户是透明的 - 您是否已经逐渐变细了?

标签: sql cakephp join conditional-statements


【解决方案1】:

当关系类型为 hasMany 时,Cake 不会加入表。相反,它对第一个表 (employees) 执行查询,并使用员工的 idpostings 表执行第二个查询,以检索与该员工相关的所有帖子

您可以手动加入表格,但我建议查询张贴表,然后按员工分组

$this->Posting ->find(
    'all',
    array(
        'fields' => array('Employee.id', 'Employee.name', 'Posting.status' ),
        'conditions' => $cond,
        'group' => array('Employee.id')
    )
);

【讨论】:

  • Thyanks arilia 提供了很好的解释。工作得很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
相关资源
最近更新 更多