user12380208
user12380208

Reputation: 531

In laravel how to create unique and random number

I am trying to store unique and random student_registration_id number. If I create 5000 user registration that time also it should be unique and it should 10 digit and also I am storing student image below image storing unique id is perfect or not.

Code

public function store(Request $request)
{

  $this->validate($request, [

      'student_name' => 'required|string|max:255',
      'student_father_name' => 'required|string|max:255',
      'student_mother_name' => 'required|string|max:255',
      'student_photo' => 'required|image|mimes:jpeg,png,jpg|max:2048',  

]);

    $input['student_photo'] = time().'.'.$request->student_photo->getClientOriginalExtension();
    $folder1 = public_path('STUDENT_DATA/STUDENT_PHOTO/');
    $path1 = $folder1 . $input['student_photo']; // path 1
    $request->student_photo->move($folder1, $input['student_photo']); // image saved in first folder
    $path2 = public_path('../../../abc.com/public/STUDENT_DATA/STUDENT_PHOTO/') . $input['student_photo']; // path 2
    \File::copy($path1, $path2);

       $input['student_name'] = strtoupper ($request['student_name']);
       $input['student_father_name'] = strtoupper ($request['student_father_name']);
       $input['student_mother_name'] = strtoupper ($request['student_mother_name']);

       $input['student_registration_id'] ="SIIT_".time();        
    Student::create($input);    
   return back()->with('success',' STUDENT REGISTERD SUCCESSFULLY .');
}

Upvotes: 0

Views: 3152

Answers (2)

Clément Baconnier
Clément Baconnier

Reputation: 6058

Per your request, here's how to implement the suggested answer with your code


public function store(Request $request)
{

  $this->validate($request, [
      'student_name' => 'required|string|max:255',
      'student_father_name' => 'required|string|max:255',
      'student_mother_name' => 'required|string|max:255',
      'student_photo' => 'required|image|mimes:jpeg,png,jpg|max:2048',  
]);

    $input['student_photo'] = time().'.'.$request->student_photo->getClientOriginalExtension();
    $folder1 = public_path('STUDENT_DATA/STUDENT_PHOTO/');
    $path1 = $folder1 . $input['student_photo']; // path 1
    $request->student_photo->move($folder1, $input['student_photo']); // image saved in first folder
    $path2 = public_path('../../../abc.com/public/STUDENT_DATA/STUDENT_PHOTO/') . $input['student_photo']; // path 2
    \File::copy($path1, $path2);

    $input['student_name'] = strtoupper ($request['student_name']);
    $input['student_father_name'] = strtoupper ($request['student_father_name']);
    $input['student_mother_name'] = strtoupper ($request['student_mother_name']);

    $id = $this->generateRegistrationId();
    $input['student_registration_id'] = $id;
    DB::table('locations')->insert([['center_code' => $id]])

    Student::create($input); 

   return back()->with('success',' STUDENT REGISTERD SUCCESSFULLY .');
}

function generateRegistrationId() {
    $id = 'SIIT_' . mt_rand(1000000000, 9999999999); // better than rand()

    // call the same function if the id exists already
    if ($this->registrationIdExists($id)) {
        return $this->generateRegistrationId();
    }

    // otherwise, it's valid and can be used
    return $id;
}

function registrationIdExists($id) {
    // query the database and return a boolean
    // for instance, it might look like this in Laravel
    return Student::where('student_registration_id', $id)->exists();
}

Upvotes: 4

Tarus
Tarus

Reputation: 136

You could use this: hexdec(uniqid()); uniqid() - returns unique numbers but in their hexadecimal representation and therefore you will have to use: hexdec() to convert it to their decimal representation.

Upvotes: 0

Related Questions