Laravel统计用户职位数报错:Using $this when not in object context
问题解决:Using $this when not in object context
错误原因
- 静态方法误用$this:你将
getJobsCountAttribute定义为static静态方法,但$this仅能在类的实例方法中使用,静态方法属于类本身,无法通过$this访问实例的属性或方法。 - 视图调用逻辑错误:直接通过类
\App\User::getJobsCountAttribute()调用方法,本质是要获取单个用户的职位数,但这种调用是针对类的全局操作,并非针对单个用户实例。
修复步骤
1. 修正User模型
移除getJobsCountAttribute的static关键字,改为实例方法(符合Laravel访问器规范):
public function jobs() { return $this->hasMany(App\Job::class); } public function getJobsCountAttribute() { return $this->jobs()->count(); }
定义完成后,可直接通过用户实例的jobs_count属性获取统计结果。
2. 修正视图代码
在users/show.blade.php中,控制器应已传递单个用户实例(通常变量名为$user),直接使用访问器属性即可:
{{ $user->jobs_count }}
无需额外的@php代码块。
额外优化(非必要修复)
Job模型的关联方法名建议改为单数user(),符合Laravel关联命名规范(一个职位仅属于一个用户):
public function user() { return $this->belongsTo(App\User::class); }
内容的提问来源于stack exchange,提问作者Mohaila Tlaba
相关产品推荐
相关产品推荐

