Сбой связи Yii с индексами> 5 - PullRequest
0 голосов
/ 02 февраля 2012

У меня очень простое отношение, определенное следующим образом (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

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Я рекомендую вам использовать это -> Панель инструментов Yii Debug (она создана моим другом здесь, в Украине).

Можете ли вы предоставить структуру MySQL + некоторые примеры данных. Спасибо.

1 голос
/ 02 февраля 2012

Включите ведение журнала запросов в конфигурации вашего приложения, чтобы увидеть, что именно происходит.Получаете ли вы какие-либо результаты при выполнении этих запросов вручную?

'components' => array(

    'db' => array(
        (..)
        'enableParamLogging' => true,
    ),

    'log' => array(
        'class' => 'CLogRouter',
        'routes' => array(
            // Show log messages on web pages
            array(
                'class' => 'CWebLogRoute',
                'categories' => 'system.db.CDbCommand', //queries
                'levels' => 'error, warning, trace, info',
                //'showInFireBug' => true,
            ),

(я бы опубликовал это как комментарий, а не как ответ, но, похоже, я не могу)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...