我想在用戶註冊時自動設置唯一的隨機字符串(str_random)作爲用戶標識。如何在用戶註冊時在Laravel中自動設置隨機字符串ID
我把代碼放在哪裏?
'id' => str_random(32);
我認爲應該在user.php的(模型)去。
我想在用戶註冊時自動設置唯一的隨機字符串(str_random)作爲用戶標識。如何在用戶註冊時在Laravel中自動設置隨機字符串ID
我把代碼放在哪裏?
'id' => str_random(32);
我認爲應該在user.php的(模型)去。
我居然通過執行以下操作來解決問題嘍。我不確定這是否是最佳做法。
在UsersController.php
public function store()
{
$data = Input::all();
$data['id'] = str_random(32); // THIS IS THE LINE
$validator = Validator::make($data = Input::all(), User::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
User::create($data);
return Redirect::route('users.index');
}
利用creating
雄辯事件劫持User對象的創建並在其中設置您的隨機ID。
這是哪裏?我可以不把它放在User.php模型上嗎? – Mike
您可以...例如在啓動方法中。在鏈接的文檔中查找「設置模型啓動方法」。 – hannesvdvreken
你可以在你的模型做到這一點:
public static function boot()
{
parent::boot();
static::creating(function($table)
{
$table->id = str_random(32);
});
}
爲了任何人來到這裏,從谷歌,像我這樣的:*不要使用str_random的ID生成*,你將* *碰上勾結。 –