【问题标题】:How to get contain clause to generate the correct code in CakePHP如何获取包含子句以在 CakePHP 中生成正确的代码
【发布时间】: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 字段。有没有办法让它正确生成?

【问题讨论】:

标签: cakephp comparison query-builder cakephp-3.x


【解决方案1】:

能够通过将 contains 子句移动到前面的查找器方法来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-21
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2012-10-15
    • 2020-12-04
    相关资源
    最近更新 更多