42 lines
1.2 KiB
PHP
42 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Concerns;
|
|
|
|
use App\Models\Project;
|
|
use App\Models\ProjectTemplate;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
trait SyncsProjectTemplateOwnership
|
|
{
|
|
protected function syncProjectTemplateOwnership(): void
|
|
{
|
|
$projectTemplateId = $this->getAttribute('project_template_id');
|
|
$projectId = $this->getAttribute('project_id');
|
|
|
|
if ($projectTemplateId === null && $projectId !== null) {
|
|
$projectTemplateId = Project::query()
|
|
->whereKey($projectId)
|
|
->value('project_template_id');
|
|
|
|
if ($projectTemplateId !== null) {
|
|
$this->setAttribute('project_template_id', $projectTemplateId);
|
|
}
|
|
}
|
|
|
|
if ($projectId === null && $projectTemplateId !== null) {
|
|
$projectId = ProjectTemplate::query()
|
|
->whereKey($projectTemplateId)
|
|
->value('project_id');
|
|
|
|
if ($projectId !== null) {
|
|
$this->setAttribute('project_id', $projectId);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function projectTemplate(): BelongsTo
|
|
{
|
|
return $this->belongsTo(ProjectTemplate::class);
|
|
}
|
|
}
|