71 خطوط
1.7 KiB
PHP
71 خطوط
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
|
|
|
class Task extends Model
|
|
{
|
|
protected $fillable = [
|
|
'title', 'description', 'project_id', 'assignee_id', 'reporter_id',
|
|
'priority', 'status', 'blocker_type', 'blocker_note', 'start_date', 'due_date', 'estimated_time',
|
|
'actual_time', 'tags', 'sort_order', 'created_by',
|
|
];
|
|
|
|
protected $casts = [
|
|
'tags' => 'array',
|
|
'start_date' => 'date',
|
|
'due_date' => 'date',
|
|
'estimated_time' => 'decimal:2',
|
|
'actual_time' => 'decimal:2',
|
|
];
|
|
|
|
public function project(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Project::class);
|
|
}
|
|
|
|
public function assignee(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'assignee_id');
|
|
}
|
|
|
|
public function reporter(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'reporter_id');
|
|
}
|
|
|
|
public function creator(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'created_by');
|
|
}
|
|
|
|
public function checklists(): HasMany
|
|
{
|
|
return $this->hasMany(Checklist::class);
|
|
}
|
|
|
|
public function subtasks(): HasMany
|
|
{
|
|
return $this->hasMany(Subtask::class);
|
|
}
|
|
|
|
public function comments(): MorphMany
|
|
{
|
|
return $this->morphMany(Comment::class, 'commentable');
|
|
}
|
|
|
|
public function files(): MorphMany
|
|
{
|
|
return $this->morphMany(File::class, 'fileable');
|
|
}
|
|
|
|
public function sprints()
|
|
{
|
|
return $this->belongsToMany(Sprint::class, 'sprint_task')->withTimestamps();
|
|
}
|
|
}
|