У меня проблема с PHP при использовании ltree
от PostgreSQL
,
Я делаю это в SQL:
SELECT * FROM tabla t
WHERE t.parent_path <@ (
select array_agg(t1.parent_path)
from tabla t1
where t1.id in (1000035, 1000045, 1000055, 1000065)
)
Я запускаю запрос в phpmyadmin, и он работает нормально, но когда я копирую и вставляю, в PHP он не работает. Я провел небольшое исследование и обнаружил, что в PHP
Мне нужно заменить "<@" and "@>" for "OPERATOR(public.<)" and "OPERATOR(public.>)"
соответственно.
Я проверяю это в php с помощью простого запроса ltree, например:
$sql = "SELECT * FROM tabla t
WHERE t.parent_path OPERATOR(public.<) (
select t1.parent_path
from tabla t1
where t1.id in = 1000035
)";
$conn = Zend_Registry::get('conexion');
$respdata = $conn->execute($sql);
return $respdata->fetchAll(PDO::FETCH_ASSOC);
и это работает нормально, но дело в том, что в реальном запросе, который я хочу выполнить, я имею в левой части ltree
в другой стороне ltree[]
, а также
когда я использую «ОПЕРАТОР» (общедоступный.<) «это дает мне эту ошибку:
«Неопределенная функция: 7 ОШИБКА: оператор не существует: public.ltree public.< public.ltree []«
Это то, что я пытаюсь сделать …
$sql = "SELECT * FROM tabla t
WHERE t.parent_path OPERATOR(public.<) (
select array_agg(t1.parent_path)
from tabla t1
WHERE t1.id IN (1000035, 1000045, 1000055, 1000065)
)";
$conn = Zend_Registry::get('conexion');
$respdata = $conn->execute($sql);
return $respdata->fetchAll(PDO::FETCH_ASSOC);
Любой совет …. ткс.
Извините, если мой английский не очень хорош.
Ну, спасибо IMSoP, я нашел ответ.
Изменить
OPERATOR(public.<)
за
OPERATOR(public.<@)
Ткс много.
Других решений пока нет …