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);