【发布时间】:2016-07-06 04:14:48
【问题描述】:
我有两张如下表
餐桌暂停:
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`)
)
桌站:
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`)
)
我还有一些其他的表不会引起任何问题。
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();
我试过distinct(false),但没有结果。
我还检查了调试器,它运行了我想要的正确查询:
SELECT `halte`.* FROM `halte` RIGHT JOIN `stops` ON halte.id = stops.id_halte WHERE `stops`.`id_rute`='1' ORDER BY `sequence`
我尝试手动运行该查询,它返回了 29 行,这正是我想要的。但是在 Yii 中,它只返回了 27 行,因为 2 行是 Halte 表中的同一条记录。
我知道我可以使用yii\db\Query 来实现这一点,但我想使用 ActiveRecord。
有没有办法解决这个问题?
非常感谢您的意见/帮助。
谢谢。
【问题讨论】:
标签: php mysql database yii2 query-builder