【问题标题】:Eloquent "grandfather" relashionship condition雄辩的“祖父”关系条件
【发布时间】:2014-11-13 15:14:43
【问题描述】:

学校有书籍和学生。 书有页。

我怎样才能得到school_id = 1 所在的所有书籍的所有页面?我尝试了下面的代码,但我没有工作。

Page::whereHas('book.school', function($query) {
    $query->where('id', '=', 1);
})->get()->toJson();

另外,如果我想从 book_id = 1school_id = 1 获取所有页面怎么办? 我需要在这里使用 school_id 来检查我们获取页面的书是否与登录的学生来自同一所学校。

【问题讨论】:

  • 你确定book.school?上次我检查是否有必要为每个关系级别嵌套whereHas
  • 其实我并不确定。

标签: laravel laravel-4 eloquent


【解决方案1】:

简单的方法,假设Book belongsTo School

Page::whereHas('book', function($query) {
    $query->where('school_id', '=', 1);
})->get();

完整的解决方案:

Page::whereHas('book', function($q) {
    $q->whereHas('school', function ($q) {
       $q->where('id', '=', 1);
    });
})->get();

【讨论】:

  • 我希望我们将您的拉取请求 Improve has for nested relations 合并并在 Laravel 5 中可用。我永远为那个感到焦虑。
  • 是的,这增加了 Eloquent 的一致性。我很快就会找到一些时间来改进 PR,所以它带有 L5。
  • 不知道我可以嵌套查询,谢谢。顺便说一句,你的 PR 对 Eloquent 来说是非常棒的补充,希望能尽快合并。
猜你喜欢
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
相关资源
最近更新 更多