Nano Hash - криптовалюты, майнинг, программирование

Ошибка отношения Yii с индексами › 5

У меня есть очень простое отношение, определенное следующим образом (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);. Я также могу вручную редактировать свои bIds в таблице базы данных, что дает тот же результат.

Я понятия не имею, что вызывает сбой отношения для первичного ключа больше пяти. Любые предложения по устранению неполадок? Я в растерянности.

ОТРЕДАКТИРОВАНО

Оказывается, я неправильно использовал отношение. Я должен был использовать 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

02.02.2012

Ответы:


1

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

'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,
            ),

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

02.02.2012
  • Это сделало это. Возможность отладки оператора SQL позволила мне увидеть, что для ссылки использовался неправильный индекс. Оказывается, мне нужен был BELONGS_TO. 02.02.2012

  • 2

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

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

    02.02.2012
  • Это выглядит интересно. Предложение marcovtwout помогло мне решить проблему, поэтому я еще не пробовал. 02.02.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..