Phalcon 构建器 sql 多 table 列 select 不工作
Phalcon builder sql multi table column select not working
所以我试图让最终的 sql 像这样:
Select r.*, ptable.storeid from rtable as r innerjoin ptable ON ptable.id = r.pid;
但是在 phalcon phql 中没有显示这个的例子,我知道我可以在原始 sql 中做到这一点,但我想知道是否有办法使用 phql 来做到这一点。到目前为止我试过这样的:
$row = $this->modelsManager->createBuilder()
->addFrom('rtable', 'r')
->columns('Ptable.storeid')
->innerJoin('Ptable','r.pid = Ptable.id')
->getQuery()
->execute();
但这仍然不起作用,并给出了 sql 构建错误。如果有人能给我一个我想要实现的目标的例子,那就太好了。
查看您的代码 ->columns('Ptable.storeid')
这部分将仅 return 仅包含 storeid
个值的对象的结果集。
这是一个简单的连接示例,以及如何 select 来自两个表的特定列。
$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
在上面的示例中,我 select 只显示了我需要展示的列。如果您以性能为目标,这是最佳实践。但是,您可以 select 整个对象,如下所示:aliasForTable1.*
、aliasForTable2.*
...,这将 return 整个模型对象,您将能够使用模型方法。
注意:
->getSingleResult()
将 return 只有 1 个结果;
->execute()
将 return 具有多个对象的结果集;
文档中有更多查询生成器示例:https://docs.phalconphp.com/en/3.2/api/Phalcon_Mvc_Model_Query_Builder
所以我试图让最终的 sql 像这样:
Select r.*, ptable.storeid from rtable as r innerjoin ptable ON ptable.id = r.pid;
但是在 phalcon phql 中没有显示这个的例子,我知道我可以在原始 sql 中做到这一点,但我想知道是否有办法使用 phql 来做到这一点。到目前为止我试过这样的:
$row = $this->modelsManager->createBuilder()
->addFrom('rtable', 'r')
->columns('Ptable.storeid')
->innerJoin('Ptable','r.pid = Ptable.id')
->getQuery()
->execute();
但这仍然不起作用,并给出了 sql 构建错误。如果有人能给我一个我想要实现的目标的例子,那就太好了。
查看您的代码 ->columns('Ptable.storeid')
这部分将仅 return 仅包含 storeid
个值的对象的结果集。
这是一个简单的连接示例,以及如何 select 来自两个表的特定列。
$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
在上面的示例中,我 select 只显示了我需要展示的列。如果您以性能为目标,这是最佳实践。但是,您可以 select 整个对象,如下所示:aliasForTable1.*
、aliasForTable2.*
...,这将 return 整个模型对象,您将能够使用模型方法。
注意:
->getSingleResult()
将 return 只有 1 个结果;
->execute()
将 return 具有多个对象的结果集;
文档中有更多查询生成器示例:https://docs.phalconphp.com/en/3.2/api/Phalcon_Mvc_Model_Query_Builder