У меня очень простое отношение, определенное следующим образом (aId
и bId
являются первичными ключами для каждой таблицы).
class A extends CActiveRecord
{
// @var int32 $aId
}
class B extends CActiveRecord
{
// @var int32 $bId
// @var int32 $aId
public function relations()
{
return array(
'a'=>array(self::HAS_ONE, 'A', 'aId'),
);
}
}
Пока bId <= 5
, я могу получить доступ к A через $bModel->a
без каких-либо проблем. Что странно для bId > 5
, $bModel->a
- ноль. Я проверил $bModel->aId
для bId > 5
и внешний ключ правильный. Я могу даже получить доступ к A с $aModel = A::model()->findByPk($bModel->aId);
. Я также могу вручную редактировать мои bId
s в таблице базы данных, что дает тот же результат.
Я понятия не имею, что вызывает сбой отношения для первичного ключа больше пяти. Есть предложения по устранению неполадок? Я в растерянности.
EDITED
Оказывается, я не правильно использовал отношение. Я должен был использовать BELONGS_TO.
class B extends CActiveRecord
{
// @var int32 $bId
// @var int32 $aId
public function relations()
{
return array(
'a'=>array(self::HAS_ONE, 'A', 'aId'),
);
}
}
HAS_ONE заставлял B использовать bId
для индекса A. Так как в моей базе данных было пять экземпляров A, которые работали для bID < 5