Php Yii与索引的关系失败>;5.

Php Yii与索引的关系失败>;5.,php,debugging,yii,Php,Debugging,Yii,我有一个非常简单的关系定义如下(aId和bId是每个表的主键) 只要投标a没有任何问题。奇怪的是,bId>5,$bModel->a为空。我已经检查了$bModel->aId中的bId>5,外键是正确的。我甚至可以使用$aModel=A::model()->findByPk($bModel->aId)访问A。我还可以在数据库表中手动编辑我的bIds,这将产生相同的结果 我不知道是什么原因导致主键大于5的关系失败。对故障排除有什么建议吗?我不知所措 已编辑 结果证明我没有正确地使用关系。我应该用你的

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

只要投标a没有任何问题。奇怪的是,
bId>5
$bModel->a
为空。我已经检查了
$bModel->aId
中的
bId>5
,外键是正确的。我甚至可以使用
$aModel=A::model()->findByPk($bModel->aId)访问A。我还可以在数据库表中手动编辑我的
bId
s,这将产生相同的结果

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

已编辑

结果证明我没有正确地使用关系。我应该用你的


class B extends CActiveRecord
{
    // @var int32 $bId
    // @var int32 $aId

    public function relations()
    {
        return array(
            'a'=>array(self::HAS_ONE, 'A', 'aId'),
        );
    }
}

有一个原因是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, ), “组件”=>数组( 'db'=>数组( (..) “enableParamLogging”=>true, ), 'log'=>数组( “类”=>“克隆人”, “路由”=>数组( //在网页上显示日志消息 排列( “类”=>“CWebLogRoute”, 'categories'=>'system.db.CDbCommand',//查询 “级别”=>“错误、警告、跟踪、信息”, //'showInFireBug'=>正确, ),
(我想把它作为一个评论而不是一个答案,但似乎我不能)

我建议你使用这个->(它是我在乌克兰的朋友创建的)


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

这看起来很有趣。marcovtwout的建议帮助我解决了这个问题,所以我还没有尝试过。成功了。能够调试SQL语句让我看到引用使用了错误的索引。结果我需要一个。 '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, ),