ManagementSystem/BACKEND/Modules/Admin/app/Models/Sprint.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',
);
}
}