根据Laravel中的名字的首字母和整个姓氏创建唯一的用户名

时间:2019-06-16 18:39:06

标签: php laravel eloquent

我有一个包含用户的数据库。一列用于名字,一列用于姓氏。我需要根据名字和姓氏生成用户名,并且需要遵循以下模式:

  1. 仅名字的首字母
  2. 整个姓氏

如果组合不是唯一的,则在姓氏的末尾添加一个数字,在每次出现相同的新事件时递增。

我该如何用雄辩的Laravel做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:2)

$user_name = $first_name[0].'_'.$last_name;

$user_count = User::where('first_name', '=', $first_name)
        ->where('last_name', '=', $last_name)->count();
//your unique user_name
$user_name = $user_name.'_'.$user_count+1;

这只是一种方法。您也可以通过其他任何方式来做到这一点。

答案 1 :(得分:1)

// original username
$user_name = "{$first_name[0]}_{$last_name}";


// if you have  a username column
$user_count = User::where('username', $user_name)->count();

// or 

// using first name and last name
$user_count = User::where('first_name', 'LIKE', $first_name[0])
        ->where('last_name', '=', $last_name)
        ->count();

// append digit if exists
if ($user_count > 0) {
  $user_name .= "_$user_count";
}