繁体   English   中英

yii-使用关系HAS_ONE从相关表中获取数据以显示在列表页面中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM