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

Laravel Eloquent:withCount关联计数与模型属性比较查询问题

解决方案

首先纠正你代码里的笔误:模型属性是requested_participants,但你写的是requested_resources,这个错误会导致字段不存在,先修正这个。

接下来,问题出在having方法的参数处理上:当你传入字符串'requested_participants'时,Laravel会将其视为字面量字符串而非数据库字段,数据库会尝试把participants_count和字符串值比较,而非字段的数值,因此筛选失效。

你可以通过以下两种方式解决:

方法一:使用havingRaw直接编写SQL表达式

Timeslot::withCount('participants')
    ->havingRaw('participants_count < requested_participants')
    ->get();

方法二:用DB::raw包裹字段名

Timeslot::withCount('participants')
    ->having('participants_count', '<', \DB::raw('requested_participants'))
    ->get();

原理说明

havingRaw允许你直接传入原生SQL条件,让数据库正确识别requested_participants为表字段;而DB::raw则会告诉Laravel不要对该参数进行转义,直接作为字段名处理,这样就能实现participants_count(关联计数)和requested_participants(模型字段)的数值比较。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:25:21