【问题标题】:CakePHP find items with hasOne Model relation that have no associated itemCakePHP 查找具有 hasOne 模型关系但没有关联项目的项目
【发布时间】:2014-11-23 14:09:08
【问题描述】:

我有一个用户模型,它与配置文件模型具有 hasOne 关系。我想找到没有与之关联的个人资料的用户。我不知道 counterCache 是否适用于 hasOne 关系,或者是否有更好的方法与适当的条件。

【问题讨论】:

    标签: cakephp find relation zero has-one


    【解决方案1】:

    我相信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')))
    

    【讨论】:

    • 事实上,我一直在使用 hasMany 关系执行此操作,它返回一个空数组而不是单个结果! 'NULL' 也可以是 php null。
    猜你喜欢
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多