Files
KanbanGit/app/Models/Ticket.php
T

73 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use Database\Factories\TicketFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[Fillable([
'acceptance_criteria',
'board_column_id',
'description',
'parent_ticket_id',
'project_id',
'sequence_number',
'ticket_key',
'ticket_priority_id',
'ticket_type_id',
'title',
])]
class Ticket extends Model
{
/** @use HasFactory<TicketFactory> */
use HasFactory;
public function boardColumn(): BelongsTo
{
return $this->belongsTo(BoardColumn::class);
}
public function childTickets(): HasMany
{
return $this->hasMany(Ticket::class, 'parent_ticket_id')
->orderBy('sequence_number');
}
public function fieldValues(): HasMany
{
return $this->hasMany(TicketFieldValue::class)
->orderBy('ticket_field_definition_id');
}
public function parentTicket(): BelongsTo
{
return $this->belongsTo(Ticket::class, 'parent_ticket_id');
}
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
public function ticketPriority(): BelongsTo
{
return $this->belongsTo(TicketPriority::class);
}
public function ticketType(): BelongsTo
{
return $this->belongsTo(TicketType::class);
}
public function worklogEntries(): HasMany
{
return $this->hasMany(TicketWorklogEntry::class)
->orderByDesc('created_at')
->orderByDesc('id');
}
}