[英]Yii relation failing with indexes > 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
,我就可以通过$bModel->a
访问A而没有任何问题。 奇怪的是bId > 5
, $bModel->a
为null。 我已检查$bModel->aId
为bId > 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.