【问题标题】:Conditions in JOINed tables shows error CakePHPJOINed 表中的条件显示错误 CakePHP
【发布时间】:2014-04-10 12:45:46
【问题描述】:

我有两个表 employee_personals 存储员工的所有个人记录,telephone_bills 存储每个月支付给特定员工的电话费。现在在我的employeePersonalsController.php 中,我有一个名为api_show_employees() 的函数,类似于以下内容:

function api_show_employees() {
      //$this->autoRender = false;
      //Configure::write("debug",0);

      $office_id = '';
      $cond = '';

      if(isset($_GET['office_id']) && trim($_GET['office_id']) != '') {
        $office_id = $_GET['office_id'];
        $cond['EmployeePersonal.office_id'] = $office_id;
      }


      if(isset($_GET['telephoneBillTo']) && isset($_GET['telephoneBillFrom']) ) {
        if($_GET['telephoneBillTo'] != '' && $_GET['telephoneBillFrom'] != '') {
          $cond['TelephoneBill.bill_from'] = $_GET['telephoneBillFrom'];
          $cond['TelephoneBill.bill_to'] = $_GET['telephoneBillTo'];
        }
      }


      $order = 'EmployeePersonal.name';
     // $employee = $this->EmployeePersonal->find('all');
      $employee = $this->EmployeePersonal->find('all',array('order' => $order,'conditions'=>$cond));
      //return json_encode($employee);
    }

此功能基本上找到在给定期间支付账单的所有员工。但我收到一个错误

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'TelephoneBill.bill_from' in 'where clause'

型号:EmployeePersonal.php:

var $hasMany = array(
  'TelephoneBill' => array(
         'className' => 'TelephoneBill',

     )
);

TelephoneBill.php

public $name = 'TelephoneBill';
var $hasMany = array('EmployeePersonal');

注意:如果我跳过 bill_frombill_to 条件,我会得到结果,带有 TelephoneBill 数组!

【问题讨论】:

    标签: sql cakephp join where


    【解决方案1】:

    TLDR:改用Joins


    详情/注意事项:

    1) 看起来您正在使用recursive。不要那样做。请改用Containable

    2) 您不能根据包含/递归包含表中的数据的条件限制父模型 - 改为使用Joins

    2b) 或者,您可以从另一个方向查询,并使用条件查询您的TelephoneBill,然后包含EmployeePersonal

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 2012-10-02
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多