我对Yii还是个新手,但我正在尝试使用relationships()连接两个表,并从两个表中获取每一行的所有数据。
tables:
TABLE Artist KEYS(artist_Id, firstName, lastName)
TABLE Album KEYS(album_Id, title, artist_Id, genre)
// Album
public function relations()
{
return array(
'artist' => array(self::BELONGS_TO, 'Artist', 'artist_Id'),
'track' => array(self::HAS_MANY, 'Track', 'track_Id')
);
}
// Artist
public function relations()
{
return array(
'album' => array(self::HAS_MANY, 'Album', 'album_id')
);
}
// logic for getting information
$dataProvider=new CActiveDataProvider('Album');
foreach($dataProvider->getData() as $key){
echo '<br>' . $key->artist_Id; // does work
echo '<br>' . $key->firstName; // doesn't work
}
有了这个代码,我可以获得并显示专辑的正确艺人Id。但是,我想显示艺术家firstName和带有artist_Id的lastName。
我需要更改我的$dataProvider
变量以及我试图在视图index.php 中访问的方式
$dataProvider = new CActiveDataProvider('Album');
-至
$dataProvider = new CActiveDataProvider('Album', array('criteria' => array('with' => array('artist'))));
并将视图index.php更改为两者之一:
'name' => 'artist.lastName',
或
'value' => '$data->artist->firstName'