kamilcraft-api/app/Models/Project.php

74 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Builder;
/**
* @property int $id
* @property string $title
* @property array $categories
* @property string $author
* @property array $images
* @property Carbon $release_date
* @property Carbon $update_date
* @property string $project_url
* @property string $project_version
* @property string $description
*/
class Project extends Model
{
// use HasFactory;
protected $dateFormat = 'Y-m-d';
protected $guarded = [];
protected $casts = [
'id' => 'integer',
'title' => 'string',
'categories' => 'array',
'author' => 'string',
'images' => 'array',
'release_date' => 'datetime:Y-m-d',
'update_date' => 'datetime:Y-m-d',
'project_url' => 'string',
'project_version' => 'string',
'description' => 'string',
'visible' => 'boolean'
];
public function getReleaseDateAttribute($value): String
{
return Carbon::parse($value)->format('Y-m-d');
}
public function setReleaseDateAttribute($value): void
{
$this->attributes['release_date'] = $value;
}
public function getUpdateDateAttribute($value): String|null
{
return Carbon::parse($value)->format('Y-m-d');
}
public function setUpdateDateAttribute($value): void
{
if (!is_null($value))
$this->attributes['update_date'] = $value;
else
$this->attributes['update_date'] = null;
}
public function scopeVisibled(Builder $builder)
{
return $builder->where('visible', true);
}
}