You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel/Eloquent:如何筛选非自身且无当前用户投票的FeatureRequest?

Laravel 筛选排除当前用户创建及已投票的FeatureRequest

场景说明

Laravel项目中存在FeatureRequest模型,用户可对该模型实例进行投票,投票记录存储在独立的FeatureVote数据表中,一个FeatureRequest对应多条FeatureVote关联记录。

需求

需要查询的FeatureRequest需满足:

  • 排除当前认证用户自己创建的记录
  • 排除当前认证用户已投过票的记录

疑问解答

你之前担心whereDoesntHave会只返回无任何投票记录的FeatureRequest,其实这个顾虑是多余的:当给whereDoesntHave传入闭包条件时,它的作用是筛选出不存在满足闭包规则的关联记录的主模型。也就是说,这里会筛选出没有当前用户(user_id等于认证用户ID)投票记录的FeatureRequest,完全符合你的需求,不会排除掉有其他用户投票的记录。

最终解决方案代码

$f = FeatureRequest::whereDoesntHave('feature_votes', function ($query){
        $query->where('user_id', '=', Auth::id());
    })->where('user_id', '!=', Auth::id())->get();

代码说明

  • whereDoesntHave('feature_votes', ...):通过关联关系筛选出没有当前用户投票记录的FeatureRequest
  • where('user_id', '!=', Auth::id()):排除当前认证用户自己创建的FeatureRequest

内容的提问来源于stack exchange,提问作者Vranvs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:15