Как получить предложение содержать для генерации правильного кода в CakePHP - PullRequest
0 голосов
/ 21 октября 2019

У меня есть следующий код в определении таблицы.

$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, но не поле значения массива. Есть ли способ заставить это генерировать правильно?

1 Ответ

0 голосов
/ 21 октября 2019

Был в состоянии решить эту проблему, переместив предложение contains в предыдущие методы поиска.

...