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();

你应该阅读 Working with Relational Data