当我使用ltree
中的PostgreSQL
时,PHP出现了问题。
我在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.>)"
。
我使用简单的ltree查询在php中对其进行测试:
$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[]
,并且
当我使用“ OPERATOR(public。<)”时,出现此错误:
“ 未定义函数: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);
任何建议。。。 抱歉,我的英语不好。
答案 0 :(得分:0)
好吧,我很高兴找到IMSoP。
更改
OPERATOR(public.<)
对于
OPERATOR(public.<@)
非常感谢。