【问题标题】:Laravel, whereHas checking latest record of a relationship onlyLaravel,其中仅检查最新的关系记录
【发布时间】:2018-11-06 22:36:23
【问题描述】:

我有 2 个表(postsrevisions),它们之间存在关系
post 有许多 revisions(一对多关系)
Revisions 表有一个名为 status 的列( 批准拒绝
现在,我想选择所有帖子,如果其最新的修订版批准
我尝试了很多方法,但我可以获得具有已批准状态的帖子


更新

我在那个回复中找到了一个很好的解决方案

https://stackoverflow.com/a/53120558/9500574

【问题讨论】:

标签: laravel eloquent eloquent-relationship


【解决方案1】:
Post::with([ 'revisions' => function($query) {
   $query->orderBy('created_at', 'desc')->where('status', 'approved')->limit(1);   
}])->get()->filter(function($item) {
   return $item->revisions->count() > 0;
});

该集合将仅包含那些经过批准修订的帖子。

【讨论】:

  • 非常感谢,有没有什么办法可以在查询的时候直接过滤结果,得到结果后不用filter的方法
  • 没有过滤是没有办法的,因为帖子总是存在的,即使没有修订。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 2016-07-29
  • 2023-03-10
  • 2019-09-08
  • 2021-07-25
  • 1970-01-01
  • 2017-11-18
  • 2014-06-18
相关资源
最近更新 更多