2016-05-02 10 views
1

私は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();   
    } 

} 

このコードは正しく動作しますが、私は、テーブルのユーザーに常に同じ値を送信する必要があり、この列はフォームには表示されません。値が表示されない場合は、テーブルの値を送信するにはどうすればよいですか?

答えて

1

値を手動で入力するだけで済みます。これを行うにはいくつかの方法があります。

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

入力マージを使用して余分なフィールドを追加することができます。

Input::merge(array('val_key' => $val_name)); 
$input = Input::all(); 
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() 
{ 
    $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.:

0

あなたはcreate方法にあなたが直接、好きなデータを追加することができますそのデータをリクエスト自体にマージすることは悪い考えです。

0

ユーザーモデルでは、boot()メソッドを追加することでこれを行うことができます。

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

関連する問題