使用select查询构建器

时间:2015-08-04 02:41:27

标签: join model phalcon

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

$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方法,则返回一个空数组。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

而不是查询构建器,请在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();
}

答案 1 :(得分:0)

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

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

通常,还要尝试使用Kint等调试工具来检查变量。这可能非常有用。