Laravel/Lumen 模型查询 with:: 和 where: 如何做对?
Laravel/Lumen Model query with:: and where: How to do this right?
嘿 Laravel/Lumen 我有一个模型 "Article"。以下作品:
$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]: Column not found: 1054 Unknown
column 'tbl_articleTranslation.at_languageId' in 'where clause' (SQL:
select * from tbl_article
where tbl_article
.a_id
= 1 and
tbl_articleTranslation
.at_languageId
= 2 and
tbl_categoryTranslation
.ct_languageId
= 2 limit 1) in
Connection.php (line 664) at Connection->runQueryCallback('select *
from tbl_article
where tbl_article
.a_id
= ? and
tbl_articleTranslation
.at_languageId
= ? and
tbl_categoryTranslation
.ct_languageId
= ? limit 1', array('1', 2,
2), object(Closure)) in Connection.php (line 624)
不过我确信 tbl_articleTranslation.at_languageId
存在。我可能哪里出错了,有没有更正确的方法?
如果您想过滤与您的文章一起加载的相关记录,您需要对关系应用约束。
要加载所有文章但只包含给定语言的翻译,请执行以下操作:
$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);
嘿 Laravel/Lumen 我有一个模型 "Article"。以下作品:
$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]: Column not found: 1054 Unknown column 'tbl_articleTranslation.at_languageId' in 'where clause' (SQL: select * from
tbl_article
wheretbl_article
.a_id
= 1 andtbl_articleTranslation
.at_languageId
= 2 andtbl_categoryTranslation
.ct_languageId
= 2 limit 1) in Connection.php (line 664) at Connection->runQueryCallback('select * fromtbl_article
wheretbl_article
.a_id
= ? andtbl_articleTranslation
.at_languageId
= ? andtbl_categoryTranslation
.ct_languageId
= ? limit 1', array('1', 2, 2), object(Closure)) in Connection.php (line 624)
不过我确信 tbl_articleTranslation.at_languageId
存在。我可能哪里出错了,有没有更正确的方法?
如果您想过滤与您的文章一起加载的相关记录,您需要对关系应用约束。
要加载所有文章但只包含给定语言的翻译,请执行以下操作:
$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);