[英]yii - using relation HAS_ONE to get data from the related table to display in list page
我有两张桌子
大(id,bigs_name,smallid),
小(id,smallguys_name)
因此有两种模式-大和小
我在大型模型中使用了以下关系,(我希望这种关系是正确的)
'has_small' => array(self::HAS_ONE, 'small', 'smallid')
默认情况下,actionIndex被创建为
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('IphoneSubscription');
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
在_view.php中,我要显示“ smallguys_name”代替默认显示的“ smallid”。 那是在正常的php中,我会采用“ smallid”并从“ small”中选择更正的行。 我如何在yii中做到这一点?
我在_view.php中有这个-
echo $data->smallid;
输出-来自“大”的ID
我试过了-
echo $data->has_small->smallguys_name;
我得到以下CDbException
找不到列:1054“ where子句”中的未知列“ has_small.smallid”
谢谢您的帮助
问题在于,通过“ HAS_ONE”关系,它试图在SMALL表中查询SMALLID(has_small.smallid)而不是ID(has_small.id)。 如果BIG与SMALL确实存在“ HAS_ONE”关系,则需要将BIG的外键放入SMALL(将它们翻转),如下所示:
大(id,bigs_name)
小(id,smallguys_name,bigid)
'has_small' => array(self::HAS_ONE, 'small', 'bigid')
否则,如果您希望保持数据库结构不变,则可以使用您在注释中提到的BELONGS_TO关系:
'has_small' => array(self::BELONGS_TO, 'small', 'smallid')
您应该在大模型中喜欢这样,以便与大从小建立联系,
'has_small' => array(self::BELONGS_TO, 'small', 'smallid');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.