2022_06_02_081655_referral_code.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. use App\Models\User;
  3. use Illuminate\Database\Migrations\Migration;
  4. use Illuminate\Database\Schema\Blueprint;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Schema;
  7. use Illuminate\Support\Str;
  8. return new class extends Migration
  9. {
  10. public function generateCode($userid)
  11. {
  12. $random = STR::random(8);
  13. if (User::where('referral_code', '=', $random)->doesntExist()) {
  14. DB::table('users')
  15. ->where('id', '=', $userid)
  16. ->update(['referral_code' => $random]);
  17. } else {
  18. $this->generateCode($userid);
  19. }
  20. }
  21. /**
  22. * Run the migrations.
  23. *
  24. * @return void
  25. */
  26. public function up()
  27. {
  28. Schema::table('users', function (Blueprint $table) {
  29. $table->string('referral_code')->lenght(8)->nullable();
  30. });
  31. $existing_user = User::where('referral_code', '')->orWhere('referral_code', null)->get();
  32. foreach ($existing_user as $user) {
  33. $this->generateCode($user->id);
  34. }
  35. }
  36. /**
  37. * Reverse the migrations.
  38. *
  39. * @return void
  40. */
  41. public function down()
  42. {
  43. Schema::table('users', function (Blueprint $table) {
  44. $table->dropColumn('referral_code');
  45. });
  46. }
  47. };