Я получаю «Внутренняя ошибка сервера» по этому простому запросу:
$query = $this->find()
->contain(['CatLang' => function(Query $q) use($i18n){
return $q->where(['CatLang.i18n' => $i18n]);
}])
->where(['Categories.id' => $categoryId]);
$category = $query->first();
Таблицы выглядят так, упрощенно:
categories
id
cat_lang
category_id
i18n
Модели называются CategoriesTable и CatLangTable, оба расширяют Table.
CatLangTable относится к категориям:
$this->belongsTo('Categories');
.. и Categories hasMany CatLangs:
$this->hasMany('CatLang');
Запрос запускается из функции в CategoriesTable.Рабочий запрос в mysql будет выглядеть следующим образом:
SELECT * FROM categories AS c
INNER JOIN cat_lang as cl ON cl.category_id=c.id
WHERE c.id=13
AND cl.i18n='sv'
Этот запрос вернет набор результатов из одной строки в категориях с идентификатором 13, объединенный с одной строкой из cat_lang, где i18n равен 'sv'.(category_id и i18n имеют уникальный индекс.)
Может кто-нибудь подсказать, что я делаю не так?
Использование cakephp 3.5.17, php 7 и mysql 5.7.