我正在使用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();
}
}
此代码可以正常工作,但我需要始终向表用户发送相同的值,并且此列不会出现在表单中。如果没有出现该值,我该如何发送表的值?
答案 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';
});
}
...
}