php - 复杂分页与 NOT IN 条件 cakephp 2

标签 php mysql cakephp cakephp-2.0

我有一个小问题,无法让我的查询以正确的方式工作。

我的查询应该为我提供实际学期的所有讲座,但仅限于我尚未参加的讲座。所以在 SQL 中它将是:

SELECT * FROM lectures WHERE semester = $currentSemester AND lectures.id NOT IN (SELECT lectures_id FROM participaters WHERE user_id = $this->Auth->user('id'))

我已经得到的是以下内容:

$this->paginate = array(
        'conditions' => array(
            'Lecture.semester >=' => $currentSemester,
            'not' => array(
                'Lecture.id' => array(
                ),
            ),
        ),
        'order' => array(
            'Lecture.name' => 'asc',
        ),
        'contain' => array(
            'Participater',
        ),
    );
    $this->set('lectures', $this->paginate($this->Lecture));

如何使用 user_id 定义条件?也许你们中有人可以帮忙?如果有任何错误,我的英语很抱歉:)

最佳答案

首先找到要在查询中排除的 ID 列表,然后使用此 ID 列表以及“Lecture.id !=” => $ids 等条件。

假设您有模型参与者链接到模型讲座,查询可能如下所示。

//retrieve the list of excluded ids
$excluded_ids = $this->Lecture->Participater->find('list',array(
    'conditions' => array(
        'Participater.user_id' => $this->Auth->user('id')
    ),
    'fields' => array('lecture_id')
);

$this->paginate = array(
    'conditions' => array(
        'Lecture.semester >=' => $currentSemester,
        'Lecture.id !=' => $excluded_ids,//put the excluded ids here
    ),
    'order' => array(
        'Lecture.name' => 'asc',
    ),
    'contain' => array(
        'Participater',
    ),
);
$this->set('lectures', $this->paginate($this->Lecture));

关于php - 复杂分页与 NOT IN 条件 cakephp 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514676/

相关文章:

mysql - 数据库索引 cakePHP

php - 在sql查询中使用组后如何获取订单输出?

php - Laravel 5.0 Session 不能使用静态方法

php - 我的插件没有正确更新(upgrader_process_complete 问题)

php - 在按下提交按钮之前提交数据的表单

mysql - 当 "last name"中有句​​点时,在 MySQL 中按 "full name"排序

php - 如何允许用户根据一定数量的列选择他们想要保留的重复元素(MySQL PHP)

php - 在 PHP 中存储复杂的 XML 值

sql - mysql创建命令错误

php - CakePHP:如何使用数据库 View