我有两个表如下
表暂停:
CREATE TABLE `halte` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nama` varchar(255) NOT NULL,
`lat` float(10,6) DEFAULT NULL,
`lng` float(10,6) DEFAULT NULL,
PRIMARY KEY (`id`)
)
Run Code Online (Sandbox Code Playgroud)
表站:
CREATE TABLE `stops` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_halte` int(11) DEFAULT NULL,
`sequence` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_halte` (`id_halte`)
)
Run Code Online (Sandbox Code Playgroud)
我还有一些其他的表,不会造成任何问题。
Halte 表具有多对一的关系来停止。问题是当我尝试使用到表停止的右连接从halte表获取行时,Yii只返回唯一的行。即使停止表有多个与 Halte 表中同一行相关的记录,Yii 也不会再次返回相同的 Halte 行。
这是我的代码
$haltes = $modelHalte->find()
->rightJoin('stops', 'halte.id = stops.id_halte')
->where(['stops.id_rute'=>Yii::$app->request->get('rute')])
->orderBy('sequence')
->all();
Run Code Online (Sandbox Code Playgroud)
我已经尝试过distinct(false)但没有结果。我还检查了调试器,它运行了我想要的正确查询:
SELECT `halte`.* FROM `halte` RIGHT JOIN …Run Code Online (Sandbox Code Playgroud)