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