首页 > 解决方案 > Laravel 雄辩的关系如何获取关系?

问题描述

我有用户表、工作表和 JobStatus 表。我使用关系获得用户工作

return User::find($dto->getUserId())
            ->jobs()

这会将所有用户作业作为集合返回,而不是作为用户模型内部的关系。现在我需要获取工作状态,但是当我尝试这个时

User::find($dto->getUserId())
            ->jobs()
            ->statuses()
            

我得到错误Call to undefined method。我需要将状态作为集合获取,以便在从 db 获取它们时使用 where、sort by 等。有什么办法吗?

我需要做这样的事情,但有状态

return User::find($dto->getUserId())
            ->jobs()
            ->has('status')
            ->where('role','responsible')
            ->where('jobs.created_at','>=',Carbon::now()->subDays($dto->getPeriod())->toDateString())
            ->get();

标签: phplaraveleloquent

解决方案


首先使用模型中与作业的关系定义您的 statuses() 函数

喜欢多对多或一对多的关系

public function statuses(){
    return $this->belongsToMany('App\Job')->withTimestamps();
}

推荐阅读