Phalcon builder sql多表列选择不起作用

时间:2017-12-24 00:54:59

标签: php mysql sql phalcon

所以我试图让最终的sql像这样:

transform

但是在phalcon phql中没有显示这个的例子,我知道我可以在原始sql中执行此操作,但我想知道是否有办法使用phql执行此操作。到目前为止,我试过这样:

Select r.*, ptable.storeid from rtable as r innerjoin ptable ON ptable.id = r.pid;

但是这仍然不起作用并且给出了sql构建错误。如果有人能给我一个我想要实现的例子,那就太好了。

1 个答案:

答案 0 :(得分:0)

查看代码->columns('Ptable.storeid'),此部分仅返回仅包含storeid值的对象的结果集。

这是一个简单的连接示例,以及如何从两个表中选择特定列。

$result = $this->modelsManager->createBuilder()
    ->columns([
        'profile.*',
        'details.*',
    ])
    ->from(['profile' => 'Models\Profiles'])
    ->leftJoin('Models\ProfileDetails', 'details.profile_id = profile.id', 'details')
    ->where('profile.id = :id:', ['id' => 1])
    ->getQuery()->getSingleResult();


print_r($result->profile->toArray()); // All columns from Profiles table
print_r($result->details->toArray()); // All columns from ProfileDetails table

在上面的示例中,我只选择了演示所需的列。如果您的目标是性能,这是最佳实践。但是你可以像这样选择整个对象:aliasForTable1.*aliasForTable2.* ...,这将返回整个模型对象,你将能够使用模型方法。

请注意:

->getSingleResult()只返回1个结果;

->execute()将返回带有多个对象的结果集;

文档中的更多查询生成器示例:https://docs.phalconphp.com/en/3.2/api/Phalcon_Mvc_Model_Query_Builder