From dd382870876b3a7017d903b8d69e27ddd194255c Mon Sep 17 00:00:00 2001 From: gakigaki Date: Mon, 9 Jun 2025 16:44:02 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E3=83=87=E3=83=BC=E3=82=BF=E3=83=99?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E8=A9=B3=E7=B4=B0=E9=96=B2=E8=A6=A7=E6=99=82?= =?UTF-8?q?=E3=81=AB=E6=AF=8E=E5=9B=9E=E6=9C=80=E7=B5=82=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=A5=E3=81=8C=E6=9B=B4=E6=96=B0=E3=81=95=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - databases_inputs.last_col_updated_atを項目追加 - databases_inputs.last_col_updated_atはオブザーバーで更新する - 画面にはdatabases_inputs.last_col_updated_atを表示する --- .../User/Databases/DatabasesInputCols.php | 12 ++++ app/Models/User/Databases/DatabasesInputs.php | 1 + .../Databases/DatabasesInputColsObserver.php | 70 +++++++++++++++++++ .../User/Databases/DatabasesPlugin.php | 4 +- app/Providers/EventServiceProvider.php | 5 +- ...l_updated_at_to_databases_inputs_table.php | 44 ++++++++++++ .../databases_include_detail_value.blade.php | 2 +- .../default/databases_include_value.blade.php | 2 +- 8 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 app/Observers/User/Databases/DatabasesInputColsObserver.php create mode 100644 database/migrations/2025_01_31_172824_add_last_col_updated_at_to_databases_inputs_table.php diff --git a/app/Models/User/Databases/DatabasesInputCols.php b/app/Models/User/Databases/DatabasesInputCols.php index 93a2c750f..811b0791e 100644 --- a/app/Models/User/Databases/DatabasesInputCols.php +++ b/app/Models/User/Databases/DatabasesInputCols.php @@ -13,4 +13,16 @@ class DatabasesInputCols extends Model // 更新する項目の定義 protected $fillable = ['databases_inputs_id', 'databases_columns_id', 'value']; + + // リレーション + /** + * データベース入力 + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @phpcsSuppress + */ + public function databases_input() + { + return $this->belongsTo(DatabasesInputs::class, 'databases_inputs_id'); + } + } diff --git a/app/Models/User/Databases/DatabasesInputs.php b/app/Models/User/Databases/DatabasesInputs.php index db0bf0fb8..ea688892f 100644 --- a/app/Models/User/Databases/DatabasesInputs.php +++ b/app/Models/User/Databases/DatabasesInputs.php @@ -30,6 +30,7 @@ class DatabasesInputs extends Model 'first_committed_at', 'categories_id', 'views', + 'last_col_updated_at', 'created_at', 'updated_at' ]; diff --git a/app/Observers/User/Databases/DatabasesInputColsObserver.php b/app/Observers/User/Databases/DatabasesInputColsObserver.php new file mode 100644 index 000000000..53719a7c8 --- /dev/null +++ b/app/Observers/User/Databases/DatabasesInputColsObserver.php @@ -0,0 +1,70 @@ +databases_input->update([ + 'last_col_updated_at' => Carbon::now(), + ]); + } + + /** + * Handle the DatabasesInputCols "updated" event. + * + * @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols + * @return void + */ + public function updated(DatabasesInputCols $databases_input_cols) + { + $databases_input_cols->databases_input->update([ + 'last_col_updated_at' => Carbon::now(), + ]); + } + + /** + * Handle the DatabasesInputCols "deleted" event. + * + * @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols + * @return void + */ + public function deleted(DatabasesInputCols $databases_input_cols) + { + $databases_input_cols->databases_input->update([ + 'last_col_updated_at' => Carbon::now(), + ]); + } + + /** + * Handle the DatabasesInputCols "restored" event. + * + * @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols + * @return void + */ + public function restored(DatabasesInputCols $databases_input_cols) + { + // + } + + /** + * Handle the DatabasesInputCols "force deleted" event. + * + * @param App\Models\User\Databases\DatabasesInputCols $databases_input_cols + * @return void + */ + public function forceDeleted(DatabasesInputCols $databases_input_cols) + { + // + } +} diff --git a/app/Plugins/User/Databases/DatabasesPlugin.php b/app/Plugins/User/Databases/DatabasesPlugin.php index a777c7e7a..0abbf2248 100644 --- a/app/Plugins/User/Databases/DatabasesPlugin.php +++ b/app/Plugins/User/Databases/DatabasesPlugin.php @@ -1912,7 +1912,7 @@ private function getColumnValue(?DatabasesInputs $input, string $db_col_name = ' $value = $input->created_at; } elseif ($column->column_type == DatabaseColumnType::updated) { // 更新日型 - $value = $input->updated_at; + $value = $input->last_col_updated_at; } elseif ($column->column_type == DatabaseColumnType::posted) { // 公開日型 $value = $input->posted_at; @@ -3139,7 +3139,7 @@ public function downloadCsv($request, $page_id, $frame_id, $id, $data_output_fla select( 'databases_input_cols.*', 'databases_inputs.created_at as inputs_created_at', - 'databases_inputs.updated_at as inputs_updated_at', + 'databases_inputs.last_col_updated_at as inputs_updated_at', 'databases_inputs.posted_at as inputs_posted_at', 'databases_inputs.expires_at as inputs_expires_at', 'databases_inputs.display_sequence as inputs_display_sequence', diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index d1dd7eb86..8d3356fd6 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Models\User\Databases\DatabasesInputCols; +use App\Observers\User\Databases\DatabasesInputColsObserver; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -33,6 +35,7 @@ public function boot() { parent::boot(); - // + // オブザーバーの登録 + DatabasesInputCols::observe(DatabasesInputColsObserver::class); } } diff --git a/database/migrations/2025_01_31_172824_add_last_col_updated_at_to_databases_inputs_table.php b/database/migrations/2025_01_31_172824_add_last_col_updated_at_to_databases_inputs_table.php new file mode 100644 index 000000000..f37c04723 --- /dev/null +++ b/database/migrations/2025_01_31_172824_add_last_col_updated_at_to_databases_inputs_table.php @@ -0,0 +1,44 @@ +timestamp('last_col_updated_at')->nullable()->after('full_text'); + }); + + // 既存データの更新 + \DB::statement(' + UPDATE databases_inputs di + SET di.last_col_updated_at = ( + SELECT updated_at + FROM databases_input_cols dic + WHERE dic.databases_inputs_id = di.id + ORDER BY updated_at DESC + LIMIT 1 + ) + '); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('databases_inputs', function (Blueprint $table) { + $table->dropColumn('last_col_updated_at'); + }); + } +} diff --git a/resources/views/plugins/user/databases/default/databases_include_detail_value.blade.php b/resources/views/plugins/user/databases/default/databases_include_detail_value.blade.php index 68d7bf029..ef50b9491 100644 --- a/resources/views/plugins/user/databases/default/databases_include_detail_value.blade.php +++ b/resources/views/plugins/user/databases/default/databases_include_detail_value.blade.php @@ -83,7 +83,7 @@ } // 更新日型 elseif ($column->column_type == DatabaseColumnType::updated) { - $value = $inputs->updated_at; + $value = $inputs->last_col_updated_at; } // 表示件数型 elseif ($column->column_type == DatabaseColumnType::views) { diff --git a/resources/views/plugins/user/databases/default/databases_include_value.blade.php b/resources/views/plugins/user/databases/default/databases_include_value.blade.php index 6d9264f10..6fbbcd5ae 100644 --- a/resources/views/plugins/user/databases/default/databases_include_value.blade.php +++ b/resources/views/plugins/user/databases/default/databases_include_value.blade.php @@ -85,7 +85,7 @@ } // 更新日型 elseif ($column->column_type == DatabaseColumnType::updated) { - $value = $input->updated_at; + $value = $input->last_col_updated_at; } // 表示件数型 elseif ($column->column_type == DatabaseColumnType::views) { From 124945395d82812fc3b450a436fded11e9c94e77 Mon Sep 17 00:00:00 2001 From: gakigaki Date: Mon, 9 Jun 2025 17:03:51 +0900 Subject: [PATCH 2/2] fix: phpcs --- app/Models/User/Databases/DatabasesInputCols.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Models/User/Databases/DatabasesInputCols.php b/app/Models/User/Databases/DatabasesInputCols.php index 811b0791e..0d87607b4 100644 --- a/app/Models/User/Databases/DatabasesInputCols.php +++ b/app/Models/User/Databases/DatabasesInputCols.php @@ -20,9 +20,8 @@ class DatabasesInputCols extends Model * @return \Illuminate\Database\Eloquent\Relations\BelongsTo * @phpcsSuppress */ - public function databases_input() + public function databases_input() // phpcs:ignore { return $this->belongsTo(DatabasesInputs::class, 'databases_inputs_id'); } - }