繁体   English   中英

Yii关系失败,索引> 5

[英]Yii relation failing with indexes > 5

我有一个非常简单的关系定义如下( aIdbId是每个表的主键)。


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 ,我就可以通过$bModel->a访问A而没有任何问题。 奇怪的是bId > 5$bModel->a为null。 我已检查$bModel->aIdbId > 5并且外键是正确的。 我甚至可以使用$aModel = A::model()->findByPk($bModel->aId);访问A $aModel = A::model()->findByPk($bModel->aId); 我也可以在数据库表中手动编辑我的bId ,这会产生相同的结果。

我不知道是什么导致关键失败的主键大于五。 任何疑难解答建议? 我不知所措。

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

在应用程序配置中启用查询日志记录,以查看到底发生了什么。 手动运行这些查询时,您是否获得任何结果?

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

(我发布这个评论而不是答案,但似乎我不能)

我建议你使用它 - > Yii Debug Toolbar (它是由我在乌克兰的朋友创建的)。

你能提供mysql结构+一些示例数据吗? 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM