选择Yii2中的相关行

时间:2019-03-10 17:21:18

标签: yii2 yii2-basic-app yii2-model

我在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”。

如何从链接表中获取数据?

1 个答案:

答案 0 :(得分:3)

您已经正确定义了您的关系,但是您在错误地称呼它们。您的关系

  • getArrivalStation应指定为arrivalStation
  • getDepartuteStation()应该是departuteStation

joinWith中指定时,如果在调用array时需要指定多个关系,则需要提供joinWith,因为当前第二个调用->joinWith('getDepartuteStation()')正在覆盖前一个->joinWith('getArrivalStation')

因此查询应如下所示

$trainsTchedule = TrainSchedule::find()
    ->joinWith(['arrivalStation','departuteStation'])
    ->all();

您应该阅读有关Working with Relational Data

的信息