2020_11_10_075555_improve_table.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. <?php
  2. use App\Models\CouponLog;
  3. use App\Models\Ticket;
  4. use App\Models\TicketReply;
  5. use App\Models\UserCreditLog;
  6. use App\Models\UserDailyDataFlow;
  7. use App\Models\UserDataModifyLog;
  8. use App\Models\UserHourlyDataFlow;
  9. use Illuminate\Database\Migrations\Migration;
  10. use Illuminate\Database\Schema\Blueprint;
  11. use Illuminate\Support\Facades\Schema;
  12. class ImproveTable extends Migration
  13. {
  14. /**
  15. * Run the migrations.
  16. *
  17. * @return void
  18. */
  19. public function up()
  20. {
  21. Schema::disableForeignKeyConstraints();
  22. Schema::table('coupon_log', function (Blueprint $table) {
  23. $table->unsignedInteger('coupon_id')->default(null)->nullable()->change();
  24. $table->unsignedInteger('goods_id')->default(null)->nullable()->change();
  25. $table->unsignedInteger('order_id')->default(null)->nullable()->change();
  26. $table->foreign('coupon_id')->references('id')->on('coupon')->nullOnDelete();
  27. $table->foreign('goods_id')->references('id')->on('goods')->nullOnDelete();
  28. $table->foreign('order_id')->references('id')->on('order')->cascadeOnDelete();
  29. });
  30. Schema::table('email_filter', function (Blueprint $table) {
  31. $table->index(['words', 'type']);
  32. });
  33. Schema::table('invite', function (Blueprint $table) {
  34. $table->foreign('inviter_id')->references('id')->on('user')->cascadeOnDelete();
  35. $table->foreign('invitee_id')->references('id')->on('user')->nullOnDelete();
  36. });
  37. Schema::table('node_auth', function (Blueprint $table) {
  38. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  39. });
  40. Schema::table('node_daily_data_flow', function (Blueprint $table) {
  41. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  42. });
  43. Schema::table('node_hourly_data_flow', function (Blueprint $table) {
  44. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  45. });
  46. Schema::table('node_label', function (Blueprint $table) {
  47. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  48. $table->foreign('label_id')->references('id')->on('label')->cascadeOnDelete();
  49. });
  50. Schema::table('node_ping', function (Blueprint $table) {
  51. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  52. });
  53. Schema::table('node_rule', function (Blueprint $table) {
  54. $table->index(['node_id', 'rule_id']);
  55. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  56. $table->foreign('rule_id')->references('id')->on('rule')->cascadeOnDelete();
  57. });
  58. Schema::table('order', function (Blueprint $table) {
  59. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  60. });
  61. Schema::table('payment', function (Blueprint $table) {
  62. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  63. $table->index(['user_id', 'order_id']);
  64. });
  65. Schema::table('referral_apply', function (Blueprint $table) {
  66. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  67. });
  68. Schema::table('referral_log', function (Blueprint $table) {
  69. $table->unsignedInteger('invitee_id')->default(null)->nullable()->change();
  70. $table->unsignedInteger('order_id')->default(null)->nullable()->change();
  71. $table->foreign('inviter_id')->references('id')->on('user')->cascadeOnDelete();
  72. $table->foreign('invitee_id')->references('id')->on('user')->nullOnDelete();
  73. $table->foreign('order_id')->references('id')->on('order')->nullOnDelete();
  74. $table->index(['inviter_id', 'invitee_id']);
  75. });
  76. Schema::table('rule_group_node', function (Blueprint $table) {
  77. $table->foreign('rule_group_id')->references('id')->on('rule_group')->cascadeOnDelete();
  78. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  79. });
  80. Schema::table('rule_log', function (Blueprint $table) {
  81. $table->unsignedInteger('node_id')->default(null)->nullable()->change();
  82. $table->unsignedInteger('rule_id')->nullable()->change();
  83. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  84. $table->foreign('node_id')->references('id')->on('ss_node')->nullOnDelete();
  85. $table->foreign('rule_id')->references('id')->on('rule')->nullOnDelete();
  86. });
  87. Schema::table('ss_config', function (Blueprint $table) {
  88. $table->index('type');
  89. });
  90. Schema::table('ss_node', function (Blueprint $table) {
  91. $table->index('type');
  92. });
  93. Schema::table('ss_node_info', function (Blueprint $table) {
  94. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  95. });
  96. Schema::table('ss_node_ip', function (Blueprint $table) {
  97. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  98. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  99. });
  100. Schema::table('ss_node_online_log', function (Blueprint $table) {
  101. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  102. });
  103. Schema::table('ticket', function (Blueprint $table) {
  104. $table->unsignedInteger('admin_id')->default(null)->nullable()->comment('管理员ID')->change();
  105. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  106. $table->foreign('admin_id')->references('id')->on('user')->nullOnDelete();
  107. });
  108. Schema::table('ticket_reply', function (Blueprint $table) {
  109. $table->unsignedInteger('user_id')->default(null)->nullable()->comment('用户ID')->change();
  110. $table->unsignedInteger('admin_id')->default(null)->nullable()->comment('管理员ID')->change();
  111. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  112. $table->foreign('admin_id')->references('id')->on('user')->nullOnDelete();
  113. $table->foreign('ticket_id')->references('id')->on('ticket')->cascadeOnDelete();
  114. });
  115. Schema::table('user', function (Blueprint $table) {
  116. $table->foreign('inviter_id')->references('id')->on('user')->nullOnDelete();
  117. });
  118. Schema::table('user_baned_log', function (Blueprint $table) {
  119. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  120. });
  121. Schema::table('user_credit_log', function (Blueprint $table) {
  122. $table->unsignedInteger('order_id')->default(null)->nullable()->comment('订单ID')->change();
  123. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  124. $table->foreign('order_id')->references('id')->on('order')->nullOnDelete();
  125. });
  126. Schema::table('user_daily_data_flow', function (Blueprint $table) {
  127. $table->unsignedInteger('node_id')->default(null)->nullable()->comment('节点ID,null表示统计全部节点')->change();
  128. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  129. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  130. });
  131. Schema::table('user_data_modify_log', function (Blueprint $table) {
  132. $table->unsignedInteger('order_id')->default(null)->nullable()->comment('发生的订单ID')->change();
  133. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  134. $table->foreign('order_id')->references('id')->on('order')->nullOnDelete();
  135. });
  136. Schema::table('user_hourly_data_flow', function (Blueprint $table) {
  137. $table->unsignedInteger('node_id')->default(null)->nullable()->comment('节点ID,null表示统计全部节点')->change();
  138. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  139. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  140. });
  141. Schema::table('user_login_log', function (Blueprint $table) {
  142. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  143. });
  144. Schema::table('user_subscribe', function (Blueprint $table) {
  145. $table->unique('code');
  146. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  147. });
  148. Schema::table('user_subscribe_log', function (Blueprint $table) {
  149. $table->foreign('user_subscribe_id')->references('id')->on('user_subscribe')->cascadeOnDelete();
  150. });
  151. Schema::table('user_traffic_log', function (Blueprint $table) {
  152. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  153. $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
  154. });
  155. Schema::table('verify', function (Blueprint $table) {
  156. $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
  157. });
  158. CouponLog::whereCouponId(0)->update(['coupon_id' => null]);
  159. CouponLog::whereGoodsId(0)->update(['goods_id' => null]);
  160. CouponLog::whereOrderId(0)->update(['order_id' => null]);
  161. Ticket::whereAdminId(0)->update(['admin_id' => null]);
  162. TicketReply::whereUserId(0)->update(['user_id' => null]);
  163. TicketReply::whereAdminId(0)->update(['admin_id' => null]);
  164. UserCreditLog::whereOrderId(0)->update(['order_id' => null]);
  165. UserHourlyDataFlow::whereNodeId(0)->update(['node_id' => null]);
  166. UserDailyDataFlow::whereNodeId(0)->update(['node_id' => null]);
  167. UserDataModifyLog::whereOrderId(0)->update(['order_id' => null]);
  168. Schema::enableForeignKeyConstraints();
  169. }
  170. /**
  171. * Reverse the migrations.
  172. *
  173. * @return void
  174. */
  175. public function down()
  176. {
  177. Schema::disableForeignKeyConstraints();
  178. CouponLog::whereCouponId(null)->update(['coupon_id' => 0]);
  179. CouponLog::whereGoodsId(null)->update(['goods_id' => 0]);
  180. CouponLog::whereOrderId(null)->update(['order_id' => 0]);
  181. Ticket::whereAdminId(null)->update(['admin_id' => 0]);
  182. TicketReply::whereUserId(null)->update(['user_id' => 0]);
  183. TicketReply::whereAdminId(null)->update(['admin_id' => 0]);
  184. UserCreditLog::whereOrderId(null)->update(['order_id' => 0]);
  185. UserHourlyDataFlow::whereNodeId(null)->update(['node_id' => 0]);
  186. UserDailyDataFlow::whereNodeId(null)->update(['node_id' => 0]);
  187. UserDataModifyLog::whereOrderId(null)->update(['order_id' => 0]);
  188. Schema::table('coupon_log', function (Blueprint $table) {
  189. $table->dropForeign(['coupon_id']);
  190. $table->dropForeign(['goods_id']);
  191. $table->dropForeign(['order_id']);
  192. $table->dropIndex('coupon_log_coupon_id_foreign');
  193. $table->dropIndex('coupon_log_goods_id_foreign');
  194. $table->dropIndex('coupon_log_order_id_foreign');
  195. });
  196. Schema::table('coupon_log', function (Blueprint $table) {
  197. $table->unsignedInteger('coupon_id')->default(0)->nullable(false)->change();
  198. $table->unsignedInteger('goods_id')->default(0)->nullable(false)->change();
  199. $table->unsignedInteger('order_id')->default(0)->nullable(false)->change();
  200. });
  201. Schema::table('email_filter', function (Blueprint $table) {
  202. $table->dropIndex(['words', 'type']);
  203. });
  204. Schema::table('invite', function (Blueprint $table) {
  205. $table->dropForeign(['inviter_id']);
  206. $table->dropForeign(['invitee_id']);
  207. $table->dropIndex('invite_inviter_id_foreign');
  208. $table->dropIndex('invite_invitee_id_foreign');
  209. });
  210. Schema::table('node_auth', function (Blueprint $table) {
  211. $table->dropForeign(['node_id']);
  212. $table->dropIndex('node_auth_node_id_foreign');
  213. });
  214. Schema::table('node_daily_data_flow', function (Blueprint $table) {
  215. $table->dropForeign(['node_id']);
  216. });
  217. Schema::table('node_hourly_data_flow', function (Blueprint $table) {
  218. $table->dropForeign(['node_id']);
  219. });
  220. Schema::table('node_label', function (Blueprint $table) {
  221. $table->dropForeign(['node_id']);
  222. $table->dropForeign(['label_id']);
  223. $table->dropIndex('node_label_label_id_foreign');
  224. });
  225. Schema::table('node_ping', function (Blueprint $table) {
  226. $table->dropForeign(['node_id']);
  227. });
  228. Schema::table('node_rule', function (Blueprint $table) {
  229. $table->dropForeign(['node_id']);
  230. $table->dropForeign(['rule_id']);
  231. $table->dropIndex(['node_id', 'rule_id']);
  232. $table->dropIndex('node_rule_rule_id_foreign');
  233. });
  234. Schema::table('order', function (Blueprint $table) {
  235. $table->dropForeign(['user_id']);
  236. });
  237. Schema::table('payment', function (Blueprint $table) {
  238. $table->dropForeign(['user_id']);
  239. $table->dropIndex(['user_id', 'order_id']);
  240. });
  241. Schema::table('referral_apply', function (Blueprint $table) {
  242. $table->dropForeign(['user_id']);
  243. $table->dropIndex('referral_apply_user_id_foreign');
  244. });
  245. Schema::table('referral_log', function (Blueprint $table) {
  246. $table->dropForeign(['inviter_id']);
  247. $table->dropForeign(['invitee_id']);
  248. $table->dropForeign(['order_id']);
  249. $table->dropIndex(['inviter_id', 'invitee_id']);
  250. $table->dropIndex('referral_log_invitee_id_foreign');
  251. $table->dropIndex('referral_log_order_id_foreign');
  252. });
  253. Schema::table('referral_log', function (Blueprint $table) {
  254. $table->unsignedInteger('invitee_id')->nullable(false)->change();
  255. $table->unsignedInteger('order_id')->nullable(false)->change();
  256. });
  257. Schema::table('rule_group_node', function (Blueprint $table) {
  258. $table->dropForeign(['rule_group_id']);
  259. $table->dropForeign(['node_id']);
  260. $table->dropIndex('rule_group_node_rule_group_id_foreign');
  261. $table->dropIndex('rule_group_node_node_id_foreign');
  262. });
  263. Schema::table('rule_log', function (Blueprint $table) {
  264. $table->dropForeign(['user_id']);
  265. $table->dropForeign(['node_id']);
  266. $table->dropForeign(['rule_id']);
  267. $table->dropIndex('rule_log_node_id_foreign');
  268. $table->dropIndex('rule_log_rule_id_foreign');
  269. });
  270. Schema::table('rule_log', function (Blueprint $table) {
  271. $table->unsignedInteger('node_id')->default(0)->nullable(false)->change();
  272. $table->unsignedInteger('rule_id')->default(0)->nullable(false)->change();
  273. });
  274. Schema::table('ss_config', function (Blueprint $table) {
  275. $table->dropIndex(['type']);
  276. });
  277. Schema::table('ss_node', function (Blueprint $table) {
  278. $table->dropIndex(['type']);
  279. });
  280. Schema::table('ss_node_info', function (Blueprint $table) {
  281. $table->dropForeign(['node_id']);
  282. });
  283. Schema::table('ss_node_ip', function (Blueprint $table) {
  284. $table->dropForeign(['node_id']);
  285. $table->dropForeign(['user_id']);
  286. });
  287. Schema::table('ss_node_online_log', function (Blueprint $table) {
  288. $table->dropForeign(['node_id']);
  289. });
  290. Schema::table('ticket', function (Blueprint $table) {
  291. $table->dropForeign(['user_id']);
  292. $table->dropForeign(['admin_id']);
  293. $table->dropIndex('ticket_user_id_foreign');
  294. $table->dropIndex('ticket_admin_id_foreign');
  295. });
  296. Schema::table('ticket', function (Blueprint $table) {
  297. $table->unsignedInteger('admin_id')->default(0)->nullable(false)->change();
  298. });
  299. Schema::table('ticket_reply', function (Blueprint $table) {
  300. $table->unsignedInteger('user_id')->default(0)->nullable(false)->change();
  301. $table->dropForeign(['user_id']);
  302. $table->dropForeign(['admin_id']);
  303. $table->dropForeign(['ticket_id']);
  304. $table->dropIndex('ticket_reply_user_id_foreign');
  305. $table->dropIndex('ticket_reply_admin_id_foreign');
  306. $table->dropIndex('ticket_reply_ticket_id_foreign');
  307. });
  308. Schema::table('ticket_reply', function (Blueprint $table) {
  309. $table->unsignedInteger('admin_id')->default(0)->nullable(false)->change();
  310. });
  311. Schema::table('user', function (Blueprint $table) {
  312. $table->dropForeign(['inviter_id']);
  313. $table->dropIndex('user_inviter_id_foreign');
  314. });
  315. Schema::table('user_baned_log', function (Blueprint $table) {
  316. $table->dropForeign(['user_id']);
  317. $table->dropIndex('user_baned_log_user_id_foreign');
  318. });
  319. Schema::table('user_credit_log', function (Blueprint $table) {
  320. $table->dropForeign(['user_id']);
  321. $table->dropForeign(['order_id']);
  322. $table->dropIndex('user_credit_log_user_id_foreign');
  323. $table->dropIndex('user_credit_log_order_id_foreign');
  324. });
  325. Schema::table('user_credit_log', function (Blueprint $table) {
  326. $table->unsignedInteger('order_id')->default(0)->nullable(false)->change();
  327. });
  328. Schema::table('user_daily_data_flow', function (Blueprint $table) {
  329. $table->dropForeign(['user_id']);
  330. $table->dropForeign(['node_id']);
  331. $table->dropIndex('user_daily_data_flow_node_id_foreign');
  332. $table->unsignedInteger('node_id')->default(0)->nullable(false)->change();
  333. });
  334. Schema::table('user_data_modify_log', function (Blueprint $table) {
  335. $table->dropForeign(['user_id']);
  336. $table->dropForeign(['order_id']);
  337. $table->dropIndex('user_data_modify_log_user_id_foreign');
  338. $table->dropIndex('user_data_modify_log_order_id_foreign');
  339. });
  340. Schema::table('user_data_modify_log', function (Blueprint $table) {
  341. $table->unsignedInteger('order_id')->default(0)->nullable(false)->change();
  342. });
  343. Schema::table('user_hourly_data_flow', function (Blueprint $table) {
  344. $table->dropForeign(['user_id']);
  345. $table->dropForeign(['node_id']);
  346. $table->dropIndex('user_hourly_data_flow_node_id_foreign');
  347. $table->unsignedInteger('node_id')->default(0)->nullable(false)->change();
  348. });
  349. Schema::table('user_login_log', function (Blueprint $table) {
  350. $table->dropForeign(['user_id']);
  351. $table->dropIndex('user_login_log_user_id_foreign');
  352. });
  353. Schema::table('user_subscribe', function (Blueprint $table) {
  354. $table->dropUnique(['code']);
  355. $table->dropForeign(['user_id']);
  356. });
  357. Schema::table('user_subscribe_log', function (Blueprint $table) {
  358. $table->dropForeign(['user_subscribe_id']);
  359. });
  360. Schema::table('user_traffic_log', function (Blueprint $table) {
  361. $table->dropForeign(['user_id']);
  362. $table->dropForeign(['node_id']);
  363. $table->dropIndex('user_traffic_log_node_id_foreign');
  364. });
  365. Schema::table('verify', function (Blueprint $table) {
  366. $table->dropForeign(['user_id']);
  367. $table->dropIndex('verify_user_id_foreign');
  368. });
  369. }
  370. }