嘿,在Laravel / Lumen我有一个模型"文章"。以下作品:
$article = Article::with('ArticleTranslations',
'ArticleTranslations.Terms','Category','Category.CategoryTranslations')
->where('tbl_article.a_id',$id)
->first();
然而,以下因异常而失败:
$article = Article::with('ArticleTranslations',
'ArticleTranslations.Terms','Category','Category.CategoryTranslations')
->where('tbl_article.a_id',$id)
->where('tbl_articleTranslation.at_languageId',$language->getKey())
->where('tbl_categoryTranslation.ct_languageId',$language->getKey())
->first();
......虽然例外是这样的:
(3/3)QueryException SQLSTATE [42S22]:找不到列:1054未知 专栏' tbl_articleTranslation.at_languageId'在' where子句' (SQL: 从
tbl_article
中选择*tbl_article
。a_id
= 1和tbl_articleTranslation
。at_languageId
= 2和tbl_categoryTranslation
。ct_languageId
= 2限制1)in Connection-> runQueryCallback的Connection.php(第664行)('选择* 来自tbl_article
tbl_article
。a_id
=?和tbl_articleTranslation
。at_languageId
=?和tbl_categoryTranslation
。ct_languageId
=?限制1',数组(' 1',2, 2),对象(Closure))在Connection.php(第624行)
但我确信tbl_articleTranslation.at_languageId
存在。哪里可能出错,是否有更正确的方法呢?
答案 0 :(得分:1)
如果要过滤加载文章的相关记录,则需要对关系应用约束。
要加载所有文章但仅包含给定语言的翻译,请执行以下操作:
$article = Article::with(
'ArticleTranslations' => function($query) use ($language) {
$query->where('at_languageId', $language->getKey());
},
'ArticleTranslations.Terms',
'Category',
'Category.CategoryTranslations' => function($query) use ($language) {
$query->where('ct_languageId', $language->getKey());
}
)->findOrFail(id);