以下情况 - 我的用户可以进行多项测试 - 关系是users
hasMany tests
。现在,我需要写一个选择什么会检索我所有有status = 1
蚂蚁的用户,这些用户没有接受过任何测试,或者他们的测试是在六个月前拍摄的。我写了第一部分是这样的:
$users = $this->Users->find('all')
->where(['Users.status' => 1])
->matching('Tests', function($q) {
return $q
->where(['Tests.created <' => new \DateTime('-6 months')]);
});
我有什么想法可以添加第二位吗?
答案 0 :(得分:3)
你的问题不是很清楚但似乎你根本不想要在过去6个月内至少参加过一次考试的学生
在这种情况下,我认为notMatching
应该完成这项工作
$users = $this->Users->find('all')
->where(['Users.status' => 1])
->notMatching('Tests', function($q) {
return $q
->where(['Tests.created >=' => new \DateTime('-6 months')]);
});
您的情况与食谱中描述的here非常相似