dswe30290 2014-10-22 18:36
浏览 12
已采纳

复合分页与NOT IN条件cakephp 2

i have a small problem to get my query work the right way.

My query should give me all lectures in the actual semester, but just those, where i'm not participating yet. So in SQL it would be:

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

And what i already got is the following:

$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));

How can i define the condition with the user_id? Maybe someone of you can help? And sorry for my english, if here are any mistakes :)

  • 写回答

1条回答 默认 最新

  • duanjue6575 2014-10-22 18:57
    关注

    First find a list of ids you want to exclude in the query, then use this list of ids with a condition like 'Lecture.id !=' => $ids.

    Assuming you have model Participater linked to model lecture, the queries could as shown below.

    //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));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 Python如何后台操作Vmwake虚拟机键鼠
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容