如何在用户注册时在Laravel中自动设置随机字符串ID

时间:2014-04-14 15:09:20

标签: laravel

我想在用户注册时自动设置一个唯一的随机字符串(str_random)作为用户ID。

我在哪里放置代码?

'id' => str_random(32);

我认为它应该放在 User.php (模型)中。

3 个答案:

答案 0 :(得分:3)

您可以在模型中执行此操作:

public static function boot()
{
    parent::boot();

    static::creating(function($table)
    {
        $table->id = str_random(32);
    });
}

答案 1 :(得分:0)

利用creating eloquent事件劫持User对象的创建并在那里设置随机ID。

更多信息:http://laravel.com/docs/eloquent#model-events

答案 2 :(得分:0)

我实际上通过以下方式解决了这个问题。我不确定这是否是最好的做法。

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');
    }