当我使用来自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.< 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);任何建议..。tks。对不起,如果我的英语不好。
发布于 2018-12-13 15:24:52
好吧,我向IMSoP说我找到了答案。
更改
OPERATOR(public.<) 为
OPERATOR(public.<@)很多Tks。
https://stackoverflow.com/questions/53763703
复制相似问题