Cakephp查找操作未知字段错误

时间:2014-04-14 16:15:36

标签: sql cakephp join

我有2张桌子

监狱桌和守望者桌。 监狱可以安排几名监狱长为监狱工作。 Warden记录的开始日期和结束日期字段是它们为监狱工作的时间范围。

我已经成立了一个协会,这是监狱有很多监狱长。 Warden表有一个外键字段prison_id。

如果我执行$ this-> Warden-> find(' all');

我会得到所有监狱,所有的监狱长都安排在过去和未来。

我只想让Wardens为特定日期的监狱工作。

我正在尝试做类似

的事情
    $searchfilter = array(
                        'Warden.startdate <=' => $date,
                        'Warden.enddate   >=' => $date,
                        );        

    return $this->Prison->find('all', array('conditions' => $searchfilter));

但这会导致未知的字段错误。

2 个答案:

答案 0 :(得分:1)

您的发现是在监狱模型上,但您的情况是在Warden模型上,这就是它给出未知字段错误的原因。如果您只是执行以下操作,该查询将起作用:

return $this->Prison->Warden->find('all', array('conditions' => $searchfilter));

如果你想要一个特定的监狱,如果你知道它的身份证,你只需添加到你的$ searchFilter

'Warden.prison_id' => $id

答案 1 :(得分:0)

问题是你正在试图失明......你的监狱桌上没有Warden.prison_id。为了简单起见,使用可行的行为......

Prison.php

class Prison extends AppModel{
    public $hasMany = array('Warden');

    public $actsAs = array('Containable');// adding behaviors to model

    public function getPrison(){
        $searchfilter = array(
                            'Warden.startdate <=' => $date,
                            'Warden.enddate   >=' => $date,
                            );

        $data = $this->find('all', array(
                                    'contain' => array(
                                        'Warden' => array(
                                            'conditions' => $searchfilter
                                        )
                                    )
        ));

        return $data;

    }
}