php - orderby - yii2 left join
Yii2 ActiveQuery join keep devuelve valores distintos (1)
Compruebe el comando sql generado por su consulta activa
$haltes = $modelHalte->find()
->rightJoin(''stops'', ''halte.id = stops.id_halte'')
->where([''stops.id_rute''=>Yii::$app->request->get(''rute'')])
->orderBy(''sequence'')
->all();
echo $haltes->createCommand()->sql;
o para obtener el SQL con todos los parámetros incluidos, intente:
$haltes->createCommand()->getRawSql();
Y compare el código generado por ActiveQuery con su creado manualmente ..
Tengo dos tablas como abajo
parada de la mesa:
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`)
)
la mesa se detiene
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`)
)
También tengo algunas otras tablas que no causan ningún problema.
La tabla de alto tiene una relación de muchos a uno para detenerse. El problema es cuando trato de obtener filas de la tabla de detención con el derecho de unir a la tabla se detiene, Yii solo devuelve filas únicas. Yii no devolverá la misma fila de detención más una vez que incluso la tabla de detención tenga más de un registro relacionado con la misma fila en la tabla de interrupción.
Aquí está mi código
$haltes = $modelHalte->find()
->rightJoin(''stops'', ''halte.id = stops.id_halte'')
->where([''stops.id_rute''=>Yii::$app->request->get(''rute'')])
->orderBy(''sequence'')
->all();
He intentado distinct(false)
pero sin resultado. También compruebo el depurador y ejecuta la búsqueda correcta que quiero:
SELECT `halte`.* FROM `halte` RIGHT JOIN `stops` ON halte.id = stops.id_halte WHERE `stops`.`id_rute`=''1'' ORDER BY `sequence`
Traté de ejecutar esa consulta manualmente y me devolvió 29 filas, que es lo que quiero. Pero en Yii, solo devolvió 27 filas porque 2 filas es el mismo registro en la tabla de alto.
Sé que puedo lograr esto usando yii/db/Query
, pero quiero usar ActiveRecord.
¿Hay alguna forma de evitar esto?
Realmente apreciaría tu opinión / ayuda.
Gracias.