小编Ald*_*ing的帖子

Yii2 ActiveQuery join keep 返回不同的值

我有两个表如下

表暂停:

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)

php mysql database query-builder yii2

5
推荐指数
1
解决办法
1024
查看次数

标签 统计

database ×1

mysql ×1

php ×1

query-builder ×1

yii2 ×1