我有两张桌子
big(id,bigs_name,smallid),
small(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'并从'小'选择更正的行。我如何在yii中完成?
我在_view.php中有这个 -
echo $data->smallid;
输出 - 来自'big'的id
我试过了 -
echo $data->has_small->smallguys_name;
我得到以下CDbException
找不到列:1054'where子句'中的未知列'has_small.smallid'
感谢您的帮助
答案 0 :(得分:3)
问题是,如果使用“HAS_ONE”关系,它会尝试在SMALL表中查询SMALLID(has_small.smallid)而不是ID(has_small.id)。如果BIG与SMALL确实存在“HAS_ONE”关系,则需要将BIG的外键放入SMALL(触发它们),如下所示:
big(id,bigs_name)
small(id,smallguys_name,bigid)
'has_small' => array(self::HAS_ONE, 'small', 'bigid')
否则,如果你想保持你的数据库结构相同,我会使用你在评论中提到的BELONGS_TO关系:
'has_small' => array(self::BELONGS_TO, 'small', 'smallid')
答案 1 :(得分:2)