CakePHP从分页中消除了null

时间:2012-01-02 19:12:10

标签: cakephp pagination

我已经为此搜索了一下,但部分问题是我不确定如何简明扼要地描述我的问题。我在这里有两个相关的模型:应用和缺席。应用程序属于缺席,缺席有很多应用程序。这是应用程序的架构:

CREATE TABLE applications (
    id int unsigned AUTO_INCREMENT PRIMARY KEY,
    user_id int unsigned,
    absence_id int unsigned
);

这很简单。我想用特定用户的应用程序对所有缺勤进行分页(我在Absences控制器中这样做)。我可以接近这个代码:

absences_controller.php:

$this->paginate = array(
    'contain' => array(
        'Application' => array(
            'conditions' => array(
                'Application.user_id' => $viewer_id,
                //'NOT' => array('Application.id' => null),
            )
        ),
    )
);
$this->set('absences', $this->paginate());

这确实会返回我想要的缺勤,但它也会返回所有没有与之关联的应用程序的缺勤。没有自定义查询,有没有办法做到这一点?我想保留我的应用程序Cakey。您可以看到我尝试将空应用程序结果剥离到代码中注释掉的“NOT”行中。

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试:

$this->paginate = array(
    'conditions' => array(
        'Absence.application_id >' => 0
    ),
    'contain' => array(
        'Application' => array(
            'conditions' => array(
                'Application.user_id' => $viewer_id
            )
        ),
    )
)

答案 1 :(得分:0)

试试这个..

$this->paginate = array('Application' => array('conditions' => 'Application.user_id' => $viewer_id));

答案 2 :(得分:0)

您正面临正常的可包含行为。

您正在做的是撤消所有缺席,并在Application.user_id = $ viewer_id时加入应用程序。您没有返回与您的用户相关的缺席。

获取所需内容的最简单方法是从应用程序的角度检索数据并加入Absence模型。

在applications_controller.php中

 $this->set('applications', $this->paginate('Application' => array('conditions' => array('Application.user_id' => $viewer_id))));