Skip to content

Commit 19b01ed

Browse files
authored
Merge pull request #2207 from opensource-workshop/database-last-updated
[データベース]詳細閲覧時にデータの更新日が更新される不具合を修正しました
2 parents 165c266 + 1249453 commit 19b01ed

File tree

8 files changed

+134
-5
lines changed

8 files changed

+134
-5
lines changed

app/Models/User/Databases/DatabasesInputCols.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,15 @@ class DatabasesInputCols extends Model
1313

1414
// 更新する項目の定義
1515
protected $fillable = ['databases_inputs_id', 'databases_columns_id', 'value'];
16+
17+
// リレーション
18+
/**
19+
* データベース入力
20+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
21+
* @phpcsSuppress
22+
*/
23+
public function databases_input() // phpcs:ignore
24+
{
25+
return $this->belongsTo(DatabasesInputs::class, 'databases_inputs_id');
26+
}
1627
}

app/Models/User/Databases/DatabasesInputs.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class DatabasesInputs extends Model
3030
'first_committed_at',
3131
'categories_id',
3232
'views',
33+
'last_col_updated_at',
3334
'created_at',
3435
'updated_at'
3536
];
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
namespace App\Observers\User\Databases;
4+
5+
use App\Models\User\Databases\DatabasesInputCols;
6+
use Carbon\Carbon;
7+
8+
class DatabasesInputColsObserver
9+
{
10+
/**
11+
* Handle the DatabasesInputCols "created" event.
12+
*
13+
* @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols
14+
* @return void
15+
*/
16+
public function created(DatabasesInputCols $databases_input_cols)
17+
{
18+
$databases_input_cols->databases_input->update([
19+
'last_col_updated_at' => Carbon::now(),
20+
]);
21+
}
22+
23+
/**
24+
* Handle the DatabasesInputCols "updated" event.
25+
*
26+
* @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols
27+
* @return void
28+
*/
29+
public function updated(DatabasesInputCols $databases_input_cols)
30+
{
31+
$databases_input_cols->databases_input->update([
32+
'last_col_updated_at' => Carbon::now(),
33+
]);
34+
}
35+
36+
/**
37+
* Handle the DatabasesInputCols "deleted" event.
38+
*
39+
* @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols
40+
* @return void
41+
*/
42+
public function deleted(DatabasesInputCols $databases_input_cols)
43+
{
44+
$databases_input_cols->databases_input->update([
45+
'last_col_updated_at' => Carbon::now(),
46+
]);
47+
}
48+
49+
/**
50+
* Handle the DatabasesInputCols "restored" event.
51+
*
52+
* @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols
53+
* @return void
54+
*/
55+
public function restored(DatabasesInputCols $databases_input_cols)
56+
{
57+
//
58+
}
59+
60+
/**
61+
* Handle the DatabasesInputCols "force deleted" event.
62+
*
63+
* @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols
64+
* @return void
65+
*/
66+
public function forceDeleted(DatabasesInputCols $databases_input_cols)
67+
{
68+
//
69+
}
70+
}

app/Plugins/User/Databases/DatabasesPlugin.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1912,7 +1912,7 @@ private function getColumnValue(?DatabasesInputs $input, string $db_col_name = '
19121912
$value = $input->created_at;
19131913
} elseif ($column->column_type == DatabaseColumnType::updated) {
19141914
// 更新日型
1915-
$value = $input->updated_at;
1915+
$value = $input->last_col_updated_at;
19161916
} elseif ($column->column_type == DatabaseColumnType::posted) {
19171917
// 公開日型
19181918
$value = $input->posted_at;
@@ -3139,7 +3139,7 @@ public function downloadCsv($request, $page_id, $frame_id, $id, $data_output_fla
31393139
select(
31403140
'databases_input_cols.*',
31413141
'databases_inputs.created_at as inputs_created_at',
3142-
'databases_inputs.updated_at as inputs_updated_at',
3142+
'databases_inputs.last_col_updated_at as inputs_updated_at',
31433143
'databases_inputs.posted_at as inputs_posted_at',
31443144
'databases_inputs.expires_at as inputs_expires_at',
31453145
'databases_inputs.display_sequence as inputs_display_sequence',

app/Providers/EventServiceProvider.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace App\Providers;
44

5+
use App\Models\User\Databases\DatabasesInputCols;
6+
use App\Observers\User\Databases\DatabasesInputColsObserver;
57
use Illuminate\Auth\Events\Registered;
68
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
79
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
@@ -33,6 +35,7 @@ public function boot()
3335
{
3436
parent::boot();
3537

36-
//
38+
// オブザーバーの登録
39+
DatabasesInputCols::observe(DatabasesInputColsObserver::class);
3740
}
3841
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
class AddLastColUpdatedAtToDatabasesInputsTable extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('databases_inputs', function (Blueprint $table) {
17+
$table->timestamp('last_col_updated_at')->nullable()->after('full_text');
18+
});
19+
20+
// 既存データの更新
21+
\DB::statement('
22+
UPDATE databases_inputs di
23+
SET di.last_col_updated_at = (
24+
SELECT updated_at
25+
FROM databases_input_cols dic
26+
WHERE dic.databases_inputs_id = di.id
27+
ORDER BY updated_at DESC
28+
LIMIT 1
29+
)
30+
');
31+
}
32+
33+
/**
34+
* Reverse the migrations.
35+
*
36+
* @return void
37+
*/
38+
public function down()
39+
{
40+
Schema::table('databases_inputs', function (Blueprint $table) {
41+
$table->dropColumn('last_col_updated_at');
42+
});
43+
}
44+
}

resources/views/plugins/user/databases/default/databases_include_detail_value.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
}
8484
// 更新日型
8585
elseif ($column->column_type == DatabaseColumnType::updated) {
86-
$value = $inputs->updated_at;
86+
$value = $inputs->last_col_updated_at;
8787
}
8888
// 表示件数型
8989
elseif ($column->column_type == DatabaseColumnType::views) {

resources/views/plugins/user/databases/default/databases_include_value.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
}
8686
// 更新日型
8787
elseif ($column->column_type == DatabaseColumnType::updated) {
88-
$value = $input->updated_at;
88+
$value = $input->last_col_updated_at;
8989
}
9090
// 表示件数型
9191
elseif ($column->column_type == DatabaseColumnType::views) {

0 commit comments

Comments
 (0)