在laravel中创建用户的问题

时间:2016-05-02 21:06:17

标签: laravel

我正在使用Laravel创建传统的用户注册表,我发送特定值时遇到问题。

public function postUserRegister(){

    $input = Input::all();
    $rules = array(
        'name' => 'required',
     );

    $v = Validator::make($input, $rules);
    if($v->passes() ) {
        $user = User::create(Input::all());

    } else { 
        Session::flash('msg', 'The information is wrong');
        return Redirect::back();        
    }

}

此代码可以正常工作,但我需要始终向表用户发送相同的值,并且此列不会出现在表单中。如果没有出现该值,我该如何发送表的值?

5 个答案:

答案 0 :(得分:1)

您可以手动提供值。有几种方法可以做到这一点,这里有一个:

$user = new User(Input::all());
$user->yourcolumn = $yourdata;
$user->save();

答案 1 :(得分:0)

您可以使用输入合并来添加额外的字段。

Input::merge(array('val_key' => $val_name));
$input = Input::all();

答案 2 :(得分:0)

首先,我认为清理一下这个方法是理想的,例如:

public function postUserRegister(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required'
    ]);

    if ($v->fails()) {
        Session::flash('msg', 'The information is wrong');
    }

    User::create($request->all());

    return Redirect::back();
}

现在您可以使用以下方法将数据分配到特定列:

$request->merge(['column_name' => 'data']);

数据可以是null,也可以是变量等。现在整个代码看起来像是:

public function postUserRegister(Request $request)
{
    $request->merge(['column_name' => 'data']);

    $validator = Validator::make($request->all(), [
        'name' => 'required'
    ]);

    if ($validator->fails()) {
        Session::flash('msg', 'The information is wrong');
    }

    User::create($request->all());

    return Redirect::back();
}

答案 3 :(得分:0)

您可以将您想要的任何数据直接添加到create方法中:

public function postUserRegister()
{
    $input = request()->all();

    if (validator($input, ['name' => 'required'])->fails()) {
        return back()->with('msg', 'The information is wrong');        
    }

    $user = User::create($input + ['custom' => 'data']);

    //
}

P.S。将这些数据合并到请求本身是一个坏主意。

答案 4 :(得分:0)

您可以通过添加boot()方法在User模型中执行此操作。

class User extends Model
{
    public static function boot()
    {
        parent::boot();

        static::creating(function ($user) {
            $user->newColumn = 'some-value';
        });
    }

    ...
}

参考:https://laravel.com/docs/5.2/eloquent#events