2020_11_10_075555_improve_table.php 20 KB

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