belongsToMany(Criteria::class, 'sprints_criterias') ->withPivot('point', 'expect_result', 'actual_result', 'note', "created_by"); } // Định nghĩa một quan hệ với bảng users thông qua bảng users_criterias public function users2() { return $this->hasManyThrough( User::class, // Model đích UserCriteria::class, // Model trung gian 'sprint_id', // Khóa ngoại trong bảng users_criterias 'email', // Trường để khớp trong bảng users 'id', // Khóa chính trong bảng sprint 'user_email' // Trường để khớp trong bảng users_criterias ); } public function users() { return $this->hasMany(UserCriteria::class) ->leftjoin('users', 'users.email', '=', 'users_criterias.user_email') ->leftjoin('criterias', 'criterias.id', '=', 'users_criterias.criteria_id') ->select( 'users.id as user_id', 'users.name as user', 'users.email as user_email', 'criteria_id', 'users_criterias.point as point', 'users_criterias.note as note', 'users_criterias.created_by as created_by', 'criterias.name as name', 'criterias.description as description', ); } public function userCriterias() { return $this->hasMany(UserCriteria::class); } public function sprintsCriterias() { return $this->hasMany(SprintCriteria::class, 'sprint_id'); } public function usersCriterias() { return $this->hasMany(UserCriteria::class, 'sprint_id'); } }