Cakephp 3 模型查找失败,包含匿名函数
Cakephp 3 model find fails with contain anonymous function
我在这个简单的查询中得到 "An Internal Server Error Occurred":
$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');
..和类别有许多 CatLangs:
$this->hasMany('CatLang');
查询 运行 来自类别 Table 中的一个函数。 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'
此查询将 return 来自类别 ID 13 的一行的结果集,与来自 cat_lang 的一行相结合,其中 i18n 等于 'sv'。 (category_id 和 i18n 有唯一索引。)
谁能告诉我,我做错了什么?
使用蛋糕php 3.5.17,php 7,和mysql 5.7。
我的错。正如 ndm 在评论中指出的那样,我完全错过了导入 Query 命名空间的机会。
use Cake\ORM\Query;
如果我愿意阅读错误消息,它就足够清楚了::-)
App\Model\Table\CategoriesTable::App\Model\Table\{closure}()
must be an instance of App\Model\Table\Query,
instance of Cake\ORM\Query given
希望对大家有所帮助。
我在这个简单的查询中得到 "An Internal Server Error Occurred":
$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');
..和类别有许多 CatLangs:
$this->hasMany('CatLang');
查询 运行 来自类别 Table 中的一个函数。 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'
此查询将 return 来自类别 ID 13 的一行的结果集,与来自 cat_lang 的一行相结合,其中 i18n 等于 'sv'。 (category_id 和 i18n 有唯一索引。)
谁能告诉我,我做错了什么?
使用蛋糕php 3.5.17,php 7,和mysql 5.7。
我的错。正如 ndm 在评论中指出的那样,我完全错过了导入 Query 命名空间的机会。
use Cake\ORM\Query;
如果我愿意阅读错误消息,它就足够清楚了::-)
App\Model\Table\CategoriesTable::App\Model\Table\{closure}()
must be an instance of App\Model\Table\Query,
instance of Cake\ORM\Query given
希望对大家有所帮助。