Phalcon框架中的PHQL UNION查询



昨天,我在Phalcon中使用UNION进行查询语句时遇到了一个问题,并出现了一个错误。我在网上发现了这个问题。但UNION似乎没有得到支持。有人知道这件事吗?

$phql = "SELECT DISTINCT key, type FROM (
          (SELECT DISTINCT key, type FROM TableA INNER JOIN TableB    WHERE b.id =  $userId)
          UNION
          (SELECT DISTINCT key, type FROM TableA INNER JOIN TableC WHERE c.id IN $groupIds)
) ";

您可以检查的内容:
1.检查您的$groupIds是否不是数组。它应该是格式为"(1,2,3)"的字符串,才能在in
之后使用2.为查询中的所有表命名(如我的示例p1、p2、p3
3.将params传递到查询中更安全,而不是真实变量

示例以下代码运行良好):

$db = PhalconDI::getDefault()->get('db');
$stmt = $db->prepare("
    SELECT DISTINCT p3.id, p3.name FROM (
        (SELECT DISTINCT p1.id, p1.name FROM project p1 where p1.id = :from)
        UNION
        (SELECT DISTINCT p2.id, p2.name FROM project p2 where p2.id IN (:to))
    ) p3
");
$stmt->execute(['from' => 3, 'to' => implode(',', array(8))]);
$created = $stmt->fetchAll(PDO::FETCH_ASSOC);

最新更新