des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Рекурсивный запрос в yii в сортировке?

есть запрос Postgres

WITH RECURSIVE temp1 ( id,id_parent,name,PATH, LEVEL, myname  ) AS (
SELECT T1.id,T1.id_parent, T1.name, CAST (T1.id AS VARCHAR (50)) as PATH, 1 , 
CAST (T1.name AS VARCHAR (255)) as myname
    FROM t_department T1 WHERE T1.id_parent = 5 and t1.type::int = 1 and t1.hidden = 0
union
select T2.id, T2.id_parent, T2.name, CAST ( temp1.PATH ||'->'|| T2.id AS VARCHAR(50)) ,LEVEL + 1 ,
CAST ((repeat(' _ ', LEVEL+1)||T2.name) AS VARCHAR(255))
     FROM t_department T2 INNER JOIN temp1 ON( temp1.id= T2.id_parent))
select * from temp1 
ORDER BY PATH  desc LIMIT 100


получаю

07GYW.png

в модели могу изобразить

$dataReader = $connection->createCommand($sql)->query();
$rows = $dataReader->readAll();
for($i = 0, $cnt = count($rows); $i < $cnt; $i++) //формируем столбцы
{
    $id[] = $rows[$i]['id'];
}
        $criteria->addInCondition('id', $id);


так я отдам id которые отображать.

а как вывести имена с отступами и сделать сортировку по пути

UPD

сделал так
public function primaryKey()
        {
                return 'id';
        }


генератор позволил создать контролеры и вьюшки.

но приобращении ко вьюшке получаю

CException

Mymodel содержит неверное правило проверки. Правило должно иметь имя и включать элементы для проверки.
  • Вопрос задан
  • 316 просмотров
Пригласить эксперта
Ответы на вопрос 1
я обычно при сложных запросах, которые довольно часто нужно выполнять делаю представление прямо в БД, а потом с этим представлением работаю как с таблицей, то есть для нее модельку сделаю и сразу все сортировки и фильтрации начинают работать без гемороя
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы