ユーザー名が既に使用されていることをアプリで検出して変更したい。実際、ユーザーが自分自身を登録するとき、彼は姓と名を入力し、ユーザー名は lastName.firstName です。ユーザー名が既に使用されていることを検出する方法と、それを変更する方法 (たとえば、番号を追加する) は?
ありがとう。
ユーザー名が既に使用されていることをアプリで検出して変更したい。実際、ユーザーが自分自身を登録するとき、彼は姓と名を入力し、ユーザー名は lastName.firstName です。ユーザー名が既に使用されていることを検出する方法と、それを変更する方法 (たとえば、番号を追加する) は?
ありがとう。
beforeValidate()
したがって、関数をオーバーライドする必要があります。以下は私のサンプルコードです。
/**
* @inheritdoc
*/
public function beforeValidate()
{
/** your code here **/
$isExist = static::find()->where(['username' => $this->username])->count();
if($isExist){
//Count total rows with the similar username
$total = static::find()->where(['LIKE','username', "{$this->username}%"])->count();
//We will add $total + 1 to the username so we have new unique username
$this->username .= '-' . ($total+1);
}
return parent::beforeValidate();
}