首页 > 解决方案 > 过滤最喜欢的次数不起作用

问题描述

所有其他功能都可以正常工作,关注和最新,但由于某种原因它不会过滤喜欢。我认为这是 count 方法,但如果我确实喜欢->count() 我最终会遇到太多查询,有什么解决方案吗?

    public function index(Request $request) {
        $search = request()->input('title');

        $posts = Post::query()->latest();

        if ($search) {
            $posts->where('title', 'LIKE', '%' . request()->title. '%');
        } elseif ($request->has('likes')) {
            $posts->withCount('likes')->orderByDesc('likes_count');
            
        } elseif ($request->has('latest')) {
            $posts->orderByDesc('created_at');
        } elseif ($request->has('follow')) {
            $posts->whereIn('user_id', $request->user()->following()->pluck('users.id'));
        }

        return view('welcome', [
            'posts' => $posts->withCount(['comments', 'likes'])->paginate(12)
        ]); 
    }
Schema::create('likes', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained()->onDelete('cascade');
            $table->foreignId('post_id')->constrained()->onDelete('cascade');
            $table->timestamps();
        });

标签: laravel

解决方案


这是问题

$posts = Post::query()->latest();

“->latest()”已经按日期排序。如果你把它拿出来,它应该工作得很好。


推荐阅读