概況欄の時間表記が狂っていたため、フォーマットの担当をDBからPHPに移した
This commit is contained in:
13
app/Facades/Formatter.php
Normal file
13
app/Facades/Formatter.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Facades;
|
||||
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
class Formatter extends Facade
|
||||
{
|
||||
protected static function getFacadeAccessor()
|
||||
{
|
||||
return \App\Utilities\Formatter::class;
|
||||
}
|
||||
}
|
@@ -52,15 +52,15 @@ SQL
|
||||
// 概況欄のデータ取得
|
||||
$summary = DB::select(<<<'SQL'
|
||||
SELECT
|
||||
to_char(avg(span), 'FMDDD日 FMHH24時間 FMMI分') AS average,
|
||||
to_char(max(span), 'FMDDD日 FMHH24時間 FMMI分') AS longest,
|
||||
to_char(min(span), 'FMDDD日 FMHH24時間 FMMI分') AS shortest,
|
||||
to_char(sum(span), 'FMDDD日 FMHH24時間 FMMI分') AS total_times,
|
||||
avg(span) AS average,
|
||||
max(span) AS longest,
|
||||
min(span) AS shortest,
|
||||
sum(span) AS total_times,
|
||||
count(*) AS total_checkins
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC) AS span
|
||||
extract(epoch from ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC)) AS span
|
||||
FROM
|
||||
ejaculations
|
||||
WHERE
|
||||
|
@@ -48,15 +48,15 @@ SQL
|
||||
// 概況欄のデータ取得
|
||||
$summary = DB::select(<<<'SQL'
|
||||
SELECT
|
||||
to_char(avg(span), 'FMDDD日 FMHH24時間 FMMI分') AS average,
|
||||
to_char(max(span), 'FMDDD日 FMHH24時間 FMMI分') AS longest,
|
||||
to_char(min(span), 'FMDDD日 FMHH24時間 FMMI分') AS shortest,
|
||||
to_char(sum(span), 'FMDDD日 FMHH24時間 FMMI分') AS total_times,
|
||||
avg(span) AS average,
|
||||
max(span) AS longest,
|
||||
min(span) AS shortest,
|
||||
sum(span) AS total_times,
|
||||
count(*) AS total_checkins
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC) AS span
|
||||
extract(epoch from ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC)) AS span
|
||||
FROM
|
||||
ejaculations
|
||||
WHERE
|
||||
|
31
app/Providers/FormatterServiceProvider.php
Normal file
31
app/Providers/FormatterServiceProvider.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Utilities\Formatter;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class FormatterServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Bootstrap the application services.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the application services.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton(Formatter::class, function ($app) {
|
||||
return new Formatter();
|
||||
});
|
||||
}
|
||||
}
|
19
app/Utilities/Formatter.php
Normal file
19
app/Utilities/Formatter.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Utilities;
|
||||
|
||||
class Formatter
|
||||
{
|
||||
/**
|
||||
* 通算秒数を日数と時分にフォーマットします。
|
||||
* @param int|float $value 通算秒数
|
||||
* @return string "xx日 xx時間 xx分" 形式でフォーマットされた文字列
|
||||
*/
|
||||
public function formatInterval($value)
|
||||
{
|
||||
$days = floor($value / 86400);
|
||||
$hours = floor($value % 86400 / 3600);
|
||||
$minutes = floor($value % 3600 / 60);
|
||||
return "{$days}日 {$hours}時間 {$minutes}分";
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user