在cakePHP中查找具有可包含行为的条件

在cakePHP中查找具有可包含行为的条件,php,mysql,database,cakephp,model,Php,Mysql,Database,Cakephp,Model,我有两个模型,用户和进化。用户有很多进化,进化属于用户 我有10000个用户,我想做一个条件,给我500个在进化表中没有今天日期的用户 最初,我对用户表中的每一个都进行了检查,然后我查看它们是否在进化中有这样的行: $user=$this->User->find('all',array('contain' => array( 'Evolution' => array('conditions' => array('date'=>

我有两个模型,用户和进化。用户有很多进化,进化属于用户

我有10000个用户,我想做一个条件,给我500个在进化表中没有今天日期的用户

最初,我对用户表中的每一个都进行了检查,然后我查看它们是否在进化中有这样的行:

$user=$this->User->find('all',array('contain' => array(

                'Evolution' => array('conditions' => array('date'=>$lastupdate))
            ),
        'fields' => array(
            'name',
            'id',
        )
    ));
然后看看是否有争吵:

if(empty($user['Evolution']))
        {
但我认为这是非常愚蠢的,拿10000个用户,然后让他们都只拿500个

我怎样才能直接找到500个在进化表中没有今天日期的用户呢


谢谢

这样做怎么样:

$evolutions = $this->User->Evolution->find('all', 
        array(
             'conditions'=>array('date !='=>$lastupdate),
             'fields'=>array('MAX(date) as max_date', 'user_id', 'User.name', 'User.email'),
             'group'=>array('user_id', 'User.name', 'User.email')
        ),
        'contain'=>array('User'),
        'limit'=>500
)
通过这种方式,您可以在evolutions表中搜索,但因为它们是链接的,所以您将拥有每个evolutions的用户记录

如果每天有不止一次进化,问题就会出现,但是你可以用MAX()玩。

怎么样

$user=$this->User->find('all',array('contain' => array(

            'Evolution' => array('conditions' => array('date !='=>$lastupdate))
        ),
    'fields' => array(
        'name',
        'id',
    )
    'limit'=>500
));

这不起作用,因为我想找到没有$lastupdate的进化。我已经更新了答案。基本上,SpawnCxy为您提供了条件的解决方案:)这无法工作,因为我想知道哪个用户没有今天的evolution行。通过这样做,我将获得其他用户的一天,所以我没有我需要的信息。正如我告诉你的,你可以与MAX和GROUP By玩-查看更新的答案。这样你将限制进化,但是用户和进化之间的关系将保持不变,你可以在结果中找到在今天更新的用户。但条件部分是正确的。