【发布时间】:2019-10-21 14:43:27
【问题描述】:
我在表定义中有以下代码。
$paginationQuery = $this->find()
->select([
'Members__id','Members__member_type','Members__first_name',
'Members__middle_name','Members__last_name','Members__suffix'
])
->contain([
'SocialMembers' => [
'foreignKey' => false,
'queryBuilder' => function (Query $q) {
return $q->where([
'Members.Members__id' => 'SocialMembers.full_member_id'
]);
}
]
])
->from([
$this->getAlias() => $query
])
->order([
'Members__last_name' => 'ASC',
'Members__first_name' => 'ASC'
]);
return $paginationQuery;
这是对两组提取数据的并集结果进行分页。
问题来自于 queryBuilder 函数。生成的左连接如下所示:
LEFT JOIN members SocialMembers ON (
SocialMembers.member_type = 2
AND Members.Members__id = 'SocialMembers.full_member_id'
)
SocialMembers.full_member_id 周围有一对不需要的单引号。 queryBuilder 似乎可以正确处理 Members.Members__id,但不能正确处理数组的 value 字段。有没有办法让它正确生成?
【问题讨论】:
-
@ndm 您的解决方案运行良好。谢谢。
标签: cakephp comparison query-builder cakephp-3.x