yii2 - 在 Yii2 中选择相关行
问题描述
我在 Station 上链接了相关表(表 train_schedule 有离开站 ID 和到达站 ID): 在此处输入图像描述
我想从 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”的关系。
如何从链接表中获取数据?
解决方案
您已经正确定义了您的关系,但是您错误地调用了它们。你的关系
getArrivalStation
应指定为arrivalStation
getDepartuteStation()
应该departuteStation
在 中指定时,如果您需要在调用时指定多个关系,则joinWith
需要提供一个,因为当前您的第二个调用覆盖了前一个。array
joinWith
->joinWith('getDepartuteStation()')
->joinWith('getArrivalStation')
所以查询应该如下所示
$trainsTchedule = TrainSchedule::find()
->joinWith(['arrivalStation','departuteStation'])
->all();
您应该阅读有关使用关系数据的信息
推荐阅读
- swift - SwiftUI 列表的性能问题
- bluetooth - 如何在代码视觉中修剪字符串的未知第一个字符
- facebook - 来自 Facebook 的 debug_token 响应不成功:input_token 中的 App_id 与查看应用程序不匹配
- xml - 恢复包含在多个文件中的相对链
- postgresql - 为什么我的烧瓶服务器无法使用 docker-compose 与 postgres 数据库通信?
- c# - 转换 Linq IQueryable
到 Linq IQueryable - r - 尝试将点添加到基本 R 图
- git - 如何查看在 EC2 上的本地存储库上创建的分支中的文件?
- python - 将分类 Pandas 系列转换为字符串的快速方法
- python - Boto3 和 Flask:图像未正确上传到 S3