使用 Eloquent 时如何使用 '::whereHas()' 作为 '::with()' 查询的约束?

nan*_*eri 1 laravel eloquent

我有一个疑问:

Posts::whereHas('comments', function($query){
          $query->where('name', 'like', 'asd');
      })->with('comments')->get();
Run Code Online (Sandbox Code Playgroud)

它返回所有评论名称类似于“asd”的帖子以及这些帖子的所有评论。我可以在 '::whereHas' 中将上述约束用于 'with' 方法,这样它就不会返回所有评论,而只会返回符合要求的评论吗?还是我必须重复查询?

xAo*_*Aoc 6

您可以创建这样的查询,几乎没有重复:)

$callback = function($query) {
     $query->where('name', 'like', 'asd');
}
Posts::whereHas('comments', $callback)->with(['comments' => $callback])->get();
Run Code Online (Sandbox Code Playgroud)

或者,您可以在这篇Laravel帖子中制作类似的内容 - 有没有办法将 whereHas 和 with