Laravel未定义方法

时间:2019-04-20 15:29:01

标签: php laravel

当我的模型中存在兴趣方法时,我在查询中遇到以下错误。

  

调用未定义的方法Illuminate \ Database \ Query \ Builder :: interest()

控制器:

public function index() {
    $user_id = auth()->user()->id;
    $user = User::find($user_id);

    $interests = Space::where('user_id', $user_id)->interest()->get();

    return view('dashboard')->with('space', $user->space)->with('interest', $interests->space);
}

空间模型:

public function user(){
    return $this->belongsTo(User::class);
}

public function interest(){
    return $this->hasMany(Interest::class);
}

兴趣模型:

public function user(){
    return $this->belongsTo(User::class);
}

public function interest(){
    return $this->belongsTo(Space::class);
}

2 个答案:

答案 0 :(得分:0)

尝试一下, 首先,您可以通过此auth()->id()

访问经过身份验证的用户ID

对于控制器中的关系

    $interests = Space::with(['interest'])->where('user_id', $user_id)->get();

更多 Laravel eager loading

希望这会有所帮助:)

答案 1 :(得分:0)

Space::where('user_id', $user_id)->interest()->get();

该行显示错误,因为查询构建器或模型范围中不存在方法interest

但是我认为您有些不满意之处

在集合中加载关系

Space::where('user_id', $user_id)->with('interest')->get();

会工作

还有

$singleFind = Space::findOrFail($yourId)->interest();

将按预期工作

希望清楚