未定义的函数:7错误:运算符不存在:public.ltree public。<public.ltree []

时间:2018-12-13 14:07:25

标签: php postgresql ltree

当我使用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);

任何建议。。。 抱歉,我的英语不好。

1 个答案:

答案 0 :(得分:0)

好吧,我很高兴找到IMSoP。

更改

OPERATOR(public.<) 

对于

OPERATOR(public.<@)

非常感谢。