我有2个模型,User和Evolution。用户有很多Evolution,Evolution属于User。
我有10 000个用户,我想做一个条件,给我500个用户,这些用户在今天的Evolution表中没有今天的日期。
最初,我在USER表中选择了每一个,然后我在寻找他们在Evolution中的行如下:
$user=$this->User->find('all',array('contain' => array(
'Evolution' => array('conditions' => array('date'=>$lastupdate))
),
'fields' => array(
'name',
'id',
)
));
然后查看是否有一行:
if(empty($user['Evolution']))
{
但我认为吸引10 000名用户并将他们全部带到500人之后,这是非常愚蠢的。
如何让我的发现直接拥有500个在Evolution表中没有今天日期的用户。
谢谢!
答案 0 :(得分:1)
做这样的事情怎么样:
$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表中进行搜索,但由于它们是相互关联的,因此您将拥有每次演变的用户记录。
如果每天进行多次演变,问题就会出现,但是你可以用某种方式玩MAX()。
答案 1 :(得分:1)
怎么样
$user=$this->User->find('all',array('contain' => array(
'Evolution' => array('conditions' => array('date !='=>$lastupdate))
),
'fields' => array(
'name',
'id',
)
'limit'=>500
));