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为空。我已经检查了$bModel->aIdbId > 5,并且外键是正确的。我甚至可以用$aModel = A::model()->findByPk($bModel->aId);访问A。我还可以在数据库表中手动编辑我的bId,这会产生相同的结果。

我不知道是什么导致主键大于5的关系失败。有什么故障排除建议吗?我不知所措。

已编辑

事实证明我没有正确使用这个关系。我应该用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"=>数组("db"=>数组((..)'enableParamLogging'=>true,),'log'=>数组('class'=>'CLogRouter',"routes"=>数组(//在网页上显示日志消息阵列('class'=>'CWebLogRoute',"categories"=>"system.db.CDb命令",//查询'levels'=>'error,warning,trace,info',//'showInFireBug'=>true,),

(我想把它作为评论而不是答案发布,但似乎我不能)

我建议你使用这个->Yii调试工具栏(它是我在乌克兰的朋友创建的)。

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