-
近期某個需求优俘,需要修改
Laravel
中failed_jobs
表結構迹蛤,新增一個job_id
字段,將隊列ID 從payload
字段中 移到外部#表DDL CREATE TABLE `failed_jobs` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, `queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '失敗創(chuàng)建時間', `job_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '隊列id', PRIMARY KEY (`id`), KEY `idx_queue` (`queue`) ) ENGINE=InnoDB AUTO_INCREMENT=143 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC
-
查看源碼
此處觸發(fā): vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php
-
替換框架源碼操方法A
【此法實用性更高】新增 DatabaseFailedJobProvider.php 文件 路徑:database/failedJob/DatabaseFailedJobProvider.php 將源碼DatabaseFailedJobProvider中的內容復制到新文件中,不要改任何東西,包括命名空間等 修改composer.json蝗岖,注意下面2個文件位置與格式 "autoload": { "classmap": [ "database/failedJob/DatabaseFailedJobProvider.php" ], "exclude-from-classmap": [ "vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php" ] }, 最后更新composer依賴:composer dump-autoload
-
替換框架源碼操方法B
【有些公司,可能不允許修改composer.json 文件榔至,鑒于這個情況抵赢,可使用方法B】bootstrap/app.php 文件中,require 新增文件唧取,eg: require "database/failedJob/DatabaseFailedJobProvider.php"; 這樣就會替代框架源碼了
exclude-from-classmap
屬性代表铅鲤,從類別圖中排除某些文件或文件夾
博客同步更新:https://fzp.kim/blog/post/laravel-edit-souce-code
參考連接: