0
我的用戶可以有很多地址,所以我用hasMany關聯。當他們登錄時,它完美地工作,我可以訪問地址。我試圖定義一個默認使用的MainAddress,但是當他們登錄我的自定義Auth finder時忽略我的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(\Cake\ORM\Query $query, array $options)
{
$query
->select(['id', 'email', 'password'])
->contain(['Addresses', 'MainAddress']);
return $query;
}
我仍然得到所有的地址與$_user->addresses
,但在我的會議最主要的是未上市(沒有$_user->main_address
)。
它的工作,非常感謝!但我不明白爲什麼它會與「hasMany」合作,而不是與「hasOne」合作。 –
由於使用單獨的查詢獲取的hasMany關聯記錄和針對主查詢完成的select()不影響它。 – ADmad