我有一个与配置文件模型具有hasOne关系的用户模型。我想找到没有与之关联的个人资料的用户。我不知道counterCache是否适用于hasOne关系,或者在适当条件下有更好的方法。
答案 0 :(得分:3)
我相信hasOne
关系会在SQL语句中创建LEFT JOIN
。可以说,为您的查找生成的SQL看起来像(假设有更多列):
SELECT User.id, User.name, Profile.id
FROM users AS User
LEFT JOIN profiles AS Profile
ON Profile.user_id = User.id;
您需要做的就是为不匹配的行添加另一个WHERE子句:WHERE Profile.id IS NULL
。因此将Cakephp代码更改为
$this->User->find('all',array(
'conditions' => array('Profile.id' => 'NULL')))