52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace Modules\Admin\app\Models;
 | 
						|
 | 
						|
use App\Models\User;
 | 
						|
use Illuminate\Database\Eloquent\Model;
 | 
						|
 | 
						|
class Sprint extends Model
 | 
						|
{
 | 
						|
    protected $table = 'sprint';
 | 
						|
    protected $fillable = ['name', 'point', 'project_id', 'start_date', 'end_date', 'complete_date'];
 | 
						|
 | 
						|
    public function criterias()
 | 
						|
    {
 | 
						|
        return $this->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 criteria_description',
 | 
						|
            );
 | 
						|
    }
 | 
						|
}
 |