Select Yii2 中的相关行
Select related rows in Yii2
我在站上链接了相关的 table(table train_schedule 有 departute_station_id 和 arrival_station_id):
enter image description here
我想要 select 来自 train_schedule 的记录,电台名称:
$trainsTchedule = TrainSchedule::find()
->joinWith('getArrivalStation')
->joinWith('getDepartuteStation()')
->all();
在列车时刻表中 class:
/**
* @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']);
}
错误:
Relation names are case sensitive. app\models\TrainSchedule has a
relation named "arrivalStation" instead of "ArrivalStation".
如何从链接的 table 中获取数据?
您已经正确定义了您的关系,但是您调用它们的方式不正确。你的关系
getArrivalStation
应指定为 arrivalStation
getDepartuteStation()
应该是 departuteStation
当在 joinWith
中指定时,如果您需要在调用 joinWith
作为当前第二个调用时指定多个关系,则需要提供 array
->joinWith('getDepartuteStation()')
正在覆盖前一个 ->joinWith('getArrivalStation')
.
所以查询应该如下所示
$trainsTchedule = TrainSchedule::find()
->joinWith(['arrivalStation','departuteStation'])
->all();
我在站上链接了相关的 table(table train_schedule 有 departute_station_id 和 arrival_station_id): enter image description here
我想要 select 来自 train_schedule 的记录,电台名称:
$trainsTchedule = TrainSchedule::find()
->joinWith('getArrivalStation')
->joinWith('getDepartuteStation()')
->all();
在列车时刻表中 class:
/**
* @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']);
}
错误:
Relation names are case sensitive. app\models\TrainSchedule has a relation named "arrivalStation" instead of "ArrivalStation".
如何从链接的 table 中获取数据?
您已经正确定义了您的关系,但是您调用它们的方式不正确。你的关系
getArrivalStation
应指定为arrivalStation
getDepartuteStation()
应该是departuteStation
当在 joinWith
中指定时,如果您需要在调用 joinWith
作为当前第二个调用时指定多个关系,则需要提供 array
->joinWith('getDepartuteStation()')
正在覆盖前一个 ->joinWith('getArrivalStation')
.
所以查询应该如下所示
$trainsTchedule = TrainSchedule::find()
->joinWith(['arrivalStation','departuteStation'])
->all();