Как объединить первичный ключ со случайным числом в laravel? - PullRequest
2 голосов
/ 28 января 2020

Я хочу создать пользователей, но перед созданием хочу создать и назначить им случайные числа. Для случайных чисел я хочу сгенерировать первые 4 цифры случайных и оставшихся первичных ключей других цифр, которые будут назначены. Например: в моей базе уже 5 данных. Я хочу добавить одну информацию. перед добавлением данных в базу данных. Я хочу сгенерировать 4 di git случайное число и добавить первичный ключ, который равен 6 в базе данных. как 3452 + 6 в базе данных.

$digits = 4;
$ra =  rand(pow(10, $digits-1), pow(10, $digits)-1);
   return $userid = User::create([
            'firstname' => $data['firstname'],
            'lastname' => $data['lastname'],
            'email' => $data['email'],
            'userid'=> $ra, // here i want to concatenate random number with primary key which is going 
                              to be added
            'password' => Hash::make($data['password']),
]);

Ответы [ 4 ]

3 голосов
/ 28 января 2020

Получить случайные числа

$digits = 4;
$ra =  rand(pow(10, $digits-1), pow(10, $digits)-1);

Предположим, у вас уже есть 5 пользователей в вашей базе данных. Получить общее количество пользователей (данных) из вашей базы данных и увеличить на одного.

$count_total_data = User::count();
$increase_primary_key = $count_total_data + 1;

Теперь получите userid, объединив эти два числа

$userid= $ra.$set_primary_key;

Теперь сохраните пользователя в свою таблицу пользователей

$user = new User;        
$user->userid= $userid;
$user->firstname= Input::get('firstname');
$user->lastname= Input::get('lastname');
$user->email= Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();

Итак, общий код дается ниже

    $digits = 4;
    $ra =  rand(pow(10, $digits-1), pow(10, $digits)-1);
    $count_total_data = User::count();
    $increase_primary_key = $count_total_data + 1;
    $userid= $ra.$set_primary_key;

    $user = new User;        
    $user->userid= $userid;
    $user->firstname= Input::get('firstname');
    $user->lastname= Input::get('lastname');
    $user->email= Input::get('email');
    $user->password = Hash::make(Input::get('password'));
    $user->save();
2 голосов
/ 28 января 2020

rand () - это функция в php, просто укажите минимальное значение и максимальное значение. Она сгенерирует случайное число. И получите число из модели пользователя, просто сделайте это и сохраните его

$max_id=User::all()->max('id')+1;
$rand=rand(1000,9999)+$max_id;
2 голосов
/ 28 января 2020

Поместите эту функцию в вашу модель пользователя:

public function setUseridAttribute($value)
{
     //$nextID = \DB::table('users')->max('id') +1;
     $this->attributes['userid'] = rand(1000,9999)*10 + $this::max('id') + 1;
}
1 голос
/ 28 января 2020

Хорошо, как вы и просили, это то, что я обычно делаю

Обратите внимание, я предполагаю, что ваша структура таблицы выглядит следующим образом

id | userid | firstname | lastname | email | password

И userid должно быть нулевым по умолчанию

  1. После сохранения я извлекаю последний вставленный идентификатор из db
  2. Затем я настраиваю новый идентификатор так, как хотел
  3. Затем я сохранял его в новом поле (Обновление таблицы)

Вот код

$userid = User::create([
            'firstname' => $data['firstname'],
            'lastname' => $data['lastname'],
            'email' => $data['email'],
            'userid'=> $ra, // here i want to concatenate random number with primary key which is going 
                              to be added
            'password' => Hash::make($data['password']),
]);

Теперь давайте извлечем последний вставленный идентификатор

 $id = DB::getPdo()->lastInsertId();

Затем давайте сделаем это, как вы хотите

    $random_id= rand(1000,10000)

   $new_id = $id.'_'.$random_id;

Теперь обновите базу данных

 //Updating row with registration number
  User::where('id', $id)->update(['userid' => $new_id ]);

Вот и все

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...