在雄辩的Laravel中检索单个记录

bkkx9g8r  于 2023-03-04  发布在  其他
关注(0)|答案(2)|浏览(148)

请帮帮我。我不能过滤单个记录。可能是也可能不是。

// In Controller
public function show(Post $post)
{
    $post = Post::with(['comments' => function($query) {
      $query->where('status', 'active');
    }
   ])->find($post);
    // can't filter comments

    return view('post.show', ['post' => $post]);
}

按活动对评论排序

pcww981p

pcww981p1#

阅读文档https://laravel.com/docs/10.x/eloquent-relationships!

首先,你有一个**Post类型过滤为$post**。只需要动态地添加其他的东西,最后获取结果。你不需要再找到它!

public function show(Post $post)
{
    $post_res = $post->with(['comments' => function($query) {
        $query->orderBy('status', 'asc');
    }])->get();

    return view('post.show', ['post' => $post_res]);
}

如果控制器中的函数只接受ID作为参数,那么只需将代码更改为:

public function show(int $post_id)
{
    $post_res = Post::find($post_id)->with(['comments' => function($query) {
          $query->orderBy('status', 'asc');
      }])->get();

    return view('post.show', ['post' => $post_res]);
}
ma8fv8wu

ma8fv8wu2#

使用whereHas(),

$post = Post::with('comments')->whereHas('comments', function ($q) {
          $q->where('status', 'active');
        })
->find($post);

相关问题