user_id
だけでなく、主キーとして持つモデル Anketa を持っていid
ます。そして、私はそれのために HAS_ONE リレーションを作成したいので、これをコーディングします:
function relations()
{
return array(
...
'last_experience' => array(
self::HAS_ONE, 'Experience', 'user_id',
'condition' => '
`signoff` = (
SELECT MAX( `signoff` )
FROM `experience` AS t2
WHERE t2.user_id = last_experience.user_id )
',
),
);
}
しかし、このプロパティを取得しようとすると、「Property "Anketa.id" is not defined.」というメッセージが表示されます。エラー。
CActiveFinder.php ファイルで、次のことを行うコードを見つけました。
if($this->relation instanceof CBelongsToRelation)
{
if(is_int($i))
{
if(isset($parent->_table->foreignKeys[$fk])) // FK defined
$pk=$parent->_table->foreignKeys[$fk][1];
else if(is_array($this->_table->primaryKey)) // composite PK
$pk=$this->_table->primaryKey[$i];
else
$pk=$this->_table->primaryKey;
}
$params[$pk]=$record->$fk;
}
このブロックはid
、何らかの理由で の代わりに戻りますuser_id
。バグかどうかはわかりませんが、他のリレーションは問題なく機能しますが、このリレーションほど複雑ではありません。
なぜそれが起こるのですか?どうすればこれを修正できますか?
ありがとうございました!