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
相关产品推荐
相关产品推荐

