用户具有许多地址,并且用户具有一个具有自定义身份验证登录的主地址



我的用户可以有很多地址,所以我使用了has很多关联。当他们登录时,它运行良好,我可以访问这些地址。我试图定义一个将用作默认值的主地址,但是当他们登录我的自定义身份验证查找器时,忽略我的hasOne关联并且不返回任何错误。

// in UserTable.php
$this->hasMany('Addresses', [
    'className' => 'Addresses',
    'foreignKey' => 'user_id'
]);
$this->hasOne('MainAddress', [
    'className' => 'Addresses',
    'foreignKey' => 'user_id',
    'conditions' => ['is_main' => true]
]);
// ...
public function findAuth(CakeORMQuery $query, array $options)
{
     $query
     ->select(['id', 'email', 'password'])
     ->contain(['Addresses', 'MainAddress']);
     return $query;
}

我仍然得到所有带有$_user->addresses的地址,但主地址没有在我的会话中列出(没有$_user->main_address)。

该问题是由于您select()引起的。您还需要在列表中包含hasOne关联表的字段(因为它执行连接)。

最新更新