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

Laravel扩展User模型后查询无结果,子类缺失什么配置?

问题分析与解决

你的Cyclist模型在全局作用域的筛选条件中未指定is_active字段所属的表名,当执行join多表关联查询后,数据库无法明确该字段来自users表还是关联的cyclist_table表,最终导致查询逻辑异常、返回空结果。

修改方案

调整全局作用域的筛选逻辑,给字段加上表名限定:

class Cyclist extends User
{
    protected $table = 'users';

    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('cyclist', function (Builder $builder) {
            // 明确指定users表的is_active字段
            $builder->where('users.is_active', 'ok');
        });
    }
}

补充说明

  • 若cyclist_table表中恰好也存在is_active字段,这种字段歧义会直接让筛选条件匹配到错误表的数据;
  • 即便关联表没有同名字段,多表查询时也必须明确字段归属,否则数据库可能触发隐性语法错误或过滤逻辑失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:25:58