Неопределенная функция: 7 ОШИБКА: оператор не существует: public.ltree public. <Public.ltree [] - PullRequest
0 голосов
/ 13 декабря 2018

У меня проблема в 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);

Любой совет .... ткс.Извините, если мой английский не очень хороший.

1 Ответ

0 голосов
/ 13 декабря 2018

Ну, спасибо IMSoP, я нашел ответ.

Измените

OPERATOR(public.<) 

на

OPERATOR(public.<@)

Ткс много.

...