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

Laravel统计用户职位数报错:Using $this when not in object context

问题解决:Using $this when not in object context

错误原因

  1. 静态方法误用$this:你将getJobsCountAttribute定义为static静态方法,但$this仅能在类的实例方法中使用,静态方法属于类本身,无法通过$this访问实例的属性或方法。
  2. 视图调用逻辑错误:直接通过类\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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:47:44