У меня есть очень простое отношение, определенное следующим образом (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
равно null. Я проверил $bModel->aId
на bId > 5
, и внешний ключ правильный. Я даже могу получить доступ к A с помощью $aModel = A::model()->findByPk($bModel->aId);
. Я также могу вручную редактировать свои bId
s в таблице базы данных, что дает тот же результат.
Я понятия не имею, что вызывает сбой отношения для первичного ключа больше пяти. Любые предложения по устранению неполадок? Я в растерянности.
ОТРЕДАКТИРОВАНО
Оказывается, я неправильно использовал отношение. Я должен был использовать 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