所以我试图让最终的sql像这样:
transform
但是在phalcon phql中没有显示这个的例子,我知道我可以在原始sql中执行此操作,但我想知道是否有办法使用phql执行此操作。到目前为止,我试过这样:
Select r.*, ptable.storeid from rtable as r innerjoin ptable ON ptable.id = r.pid;
但是这仍然不起作用并且给出了sql构建错误。如果有人能给我一个我想要实现的例子,那就太好了。
答案 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