46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Casts;
|
|
|
|
use Carbon\Carbon;
|
|
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class LocalDateTime implements CastsAttributes
|
|
{
|
|
/**
|
|
* Get local date time.
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Model $model
|
|
* @param string $key
|
|
* @param mixed $value
|
|
* @param array $attributes
|
|
* @return \Carbon\Carbon|null
|
|
* @phpcs:disable
|
|
*/
|
|
public function get(Model $model, string $key, mixed $value, array $attributes): ?\Carbon\Carbon
|
|
{
|
|
// phpcs:enable
|
|
return $value
|
|
? Carbon::parse($value)->setTimezone(config('app.timezone'))
|
|
: null;
|
|
}
|
|
|
|
/**
|
|
* Set the locale date time.
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Model $model
|
|
* @param string $key
|
|
* @param mixed $value
|
|
* @param array $attributes
|
|
* @return \Carbon\Carbon|null
|
|
* @phpcs:disable
|
|
*/
|
|
public function set(Model $model, string $key, mixed $value, array $attributes): ?\Carbon\Carbon
|
|
{
|
|
// phpcs:enable
|
|
return $value
|
|
? Carbon::parse($value, config('app.timezone'))->setTimezone('UTC')
|
|
: null;
|
|
}
|
|
}
|