Yii Framework - ActiveRecord不返回连接表的数据

时间:2015-09-17 13:39:23

标签: php mysql activerecord yii

Yii Framework非常棒,但在使用Active Record查询MySQL数据库中的数据时遇到了问题。

当我在模型Building中的函数“get”中加入2个表('building'和'building_info')时,我的第二个表中将不会返回任何数据。如果我使用Query Class执行相同的查询,则将返回两个表中的行。使用Active Record,我只获得表'building'中的数据。

模型构建:

...
// Setting Relation
public function getBuildingInfos()
{
    return $this->hasMany(BuildingInfo::className(), ['BuildingID' => 'ID']);
}    

// Get all buildings
public function get() {
    $building = Building::find()
        ->joinWith('buildingInfos')
        ->where(['building_info.langID' => 1])
        ->all();

    return $building;
}
// Attributes
public function attributeLabels()
{
    return [
        'ID' => 'ID',
        'NameBreak' => 'Name Break',
        'Tileset' => 'Tileset',
        'TilesetPosition' => 'Tileset Position',
        ...
    ]
}
...

Model BuildingInfo:

...
public function attributeLabels()
{
    return [
        'buInfoID' => 'Bu Info ID',
        'BuildingID' => 'Building ID',
        'langID' => 'Lang ID',
        'Name' => 'Name',
        'ShortDesc' => 'Short Desc',
        'ShortDescDisabled' => 'Short Desc Disabled',
    ];
} 
public function getBuilding()
{
    return $this->hasOne(Building::className(), ['ID' => 'BuildingID']);
}
...

你知道如何解决这个问题吗?

由于 凯文

1 个答案:

答案 0 :(得分:0)

Ciao Kevin :)你使用的是yii1还是yii2?

在'getBuildingInfos'中,表由BuidingID链接,在你的get函数中,你通过building_info.langID链接它。你已经验证过你的连接在sql中工作吗?