【问题标题】:Query builder with select带选择的查询生成器
【发布时间】:2015-08-04 02:41:27
【问题描述】:

我正在尝试从连接结果中选择一些列。查询是:

$queryBuilder = new \Phalcon\Mvc\Model\Query\Builder();
$queryBuilder->columns(array('L.*', 'S.build_id'));
$queryBuilder->addFrom('Gadwin\Models\Licenses', 'L');
$queryBuilder->join('Gadwin\Models\Serials', 'S.id = L.serial_id', 'S');
$resultset = $queryBuilder->getQuery()->execute();

如果我删除 columns 方法,查询将起作用并返回 Licenses 集合。但是,如果我设置了 columns 方法,则返回一个空数组。

有什么想法吗?

【问题讨论】:

    标签: join model phalcon


    【解决方案1】:

    在 phalcon 中尝试raw sql,而不是查询生成器。

    在您的模型中创建一种方法。

    public function myRawSql()
    {
      $query = "SELECT * FROM your_table WHERE some_condition";
      $modelObj = new ModelName(); // Create object of your model
      return $modelObj->getReadConnection()->query($query)->fetchAll();
    }
    

    【讨论】:

      【解决方案2】:

      我看到您要求从 2 个表中获取结果。在这种情况下,Phalcon 将返回一个 ComplexResultSet,而不是一个 ResultSet。在你的 $resultset 上尝试一个 get_class,如果它是一个 ComplexResultSet,你可以迭代它来访问它的行。它应该是这样的:

      ----------------------------------
      | Licence (object) | s.id (int ) |
      ----------------------------------
      | Licence (object) | s.id (int ) |
      ----------------------------------
      

      通常,您也可以尝试使用 Kint 等调试工具来检查您的变量。这会很有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-27
        • 1970-01-01
        • 2020-06-24
        • 2020-04-23
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2014-06-08
        相关资源
        最近更新 更多