我在Station上链接了相关表(表train_schedule具有departute_station_id和arrival_station_id): enter image description here
我要从train_schedule中选择车站名称为
的记录 $trainsTchedule = TrainSchedule::find()
->joinWith('getArrivalStation')
->joinWith('getDepartuteStation()')
->all();
在TrainSchedule类中:
/**
* @return \yii\db\ActiveQuery
*/
public function getArrivalStation()
{
return $this->hasOne(Station::className(), ['id' => 'arrival_station_id']);
}
还有
/**
* @return \yii\db\ActiveQuery
*/
public function getDepartuteStation()
{
return $this->hasOne(Station::className(), ['id' => 'departute_station_id']);
}
错误:
关系名称区分大小写。 app \ models \ TrainSchedule有一个 关系称为“ arrivalStation”,而不是“ ArrivalStation”。
如何从链接表中获取数据?
答案 0 :(得分:3)
您已经正确定义了您的关系,但是您在错误地称呼它们。您的关系
getArrivalStation
应指定为arrivalStation
getDepartuteStation()
应该是departuteStation
在joinWith
中指定时,如果在调用array
时需要指定多个关系,则需要提供joinWith
,因为当前第二个调用->joinWith('getDepartuteStation()')
正在覆盖前一个->joinWith('getArrivalStation')
。
因此查询应如下所示
$trainsTchedule = TrainSchedule::find()
->joinWith(['arrivalStation','departuteStation'])
->all();
您应该阅读有关Working with Relational Data
的信息