#yii2 #yii2-basic-app #yii2-model
#yii2 #yii2-basic-app #yii2-модель
Вопрос:
У меня есть связанные таблицы (таблица train_schedule имеет departute_station_id и arrival_station_id), связанные со станцией: введите описание изображения здесь
Я хочу выбрать записи из train_schedule с названием станций:
$trainsTchedule = TrainSchedule::find()
->joinWith('getArrivalStation')
->joinWith('getDepartuteStation()')
->all();
В классе TrainSchedule:
/**
* @return yiidbActiveQuery
*/
public function getArrivalStation()
{
return $this->hasOne(Station::className(), ['id' => 'arrival_station_id']);
}
И
/**
* @return yiidbActiveQuery
*/
public function getDepartuteStation()
{
return $this->hasOne(Station::className(), ['id' => 'departute_station_id']);
}
Ошибка:
Имена связей чувствительны к регистру. app models TrainSchedule имеет отношение с именем «arrivalStation» вместо «ArrivalStation».
Как получить данные из связанных таблиц?
Комментарии:
1. можете ли вы отметить ответ как правильный, если он сработал для вас, это может помочь другим, ищущим такое же решение
Ответ №1:
Вы правильно определили свои отношения, но вы вызываете их неправильно. Ваше отношение
getArrivalStation
должно быть указано какarrivalStation
getDepartuteStation()
должно бытьdepartuteStation
при указании в joinWith
, и вам нужно указать, array
если вам нужно указать несколько связей при вызове, joinWith
поскольку в данный момент ваш второй вызов ->joinWith('getDepartuteStation()')
переопределяет предыдущий ->joinWith('getArrivalStation')
.
Таким образом, запрос должен выглядеть следующим образом
$trainsTchedule = TrainSchedule::find()
->joinWith(['arrivalStation','departuteStation'])
->all();
Вам следует прочитать о работе с реляционными данными