diff --git a/app/Models/User/Databases/DatabasesInputCols.php b/app/Models/User/Databases/DatabasesInputCols.php index 93a2c750f..0d87607b4 100644 --- a/app/Models/User/Databases/DatabasesInputCols.php +++ b/app/Models/User/Databases/DatabasesInputCols.php @@ -13,4 +13,15 @@ class DatabasesInputCols extends Model // 更新する項目の定義 protected $fillable = ['databases_inputs_id', 'databases_columns_id', 'value']; + + // リレーション + /** + * データベース入力 + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @phpcsSuppress + */ + public function databases_input() // phpcs:ignore + { + 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) {