У меня проблема в 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
an с другой стороны ltree[]
, и когда я использую «OPERATOR (public. <)», он даетмне эта ошибка: </p>
" Неопределенная функция: 7 ОШИБКА: оператор не существует: public.ltree public. "
Это то, что я пытаюсь сделать ...
$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);
Любой совет .... ткс.Извините, если мой английский не очень хороший.