我正在尝试学习 CakePHP 3,但遇到了一个问题:
我有两个表language和rich_text_elements,并希望以下列方式加入它们:
$all = $this->find()->
select(['i18n','Language.long_name'])->
innerJoin(['Language' => 'languages'], ['Language.i18n' => 'RichTextElements.i18n'])->
group('RichTextElements.i18n')->
order(['RichTextElements.i18n'])->all();
产生以下查询:
SELECT RichTextElements.i18n AS `RichTextElements__i18n`,
Language.long_name AS `Language__long_name`
FROM rich_text_elements RichTextElements
INNER JOIN languages Language ON Language.i18n = :c0
GROUP BY RichTextElements.i18n ORDER BY RichTextElements.i18n;
如果我将“:c0”替换为“RichTextElements.i18n”,则该查询单独运行(在 HeidiSql 中)并返回五行数据,完全符合我的预期。
但是 CakePHP 返回一个空集!
问题似乎与innerJoin()
因为如果我修改查询以仅从RichTextElements表中选择,它将按预期返回五行,在 CakePHP 中:
运行良好:
$all = $this->find()->
select(['i18n'])->
group('RichTextElements.i18n')->
order(['RichTextElements.i18n'])->all();
有人看到我没看到的吗?