I have the following code for my post sign up page on my site.
$email = $request['email']; $username = $request['username']; $password = bcrypt($request['password']); $mmail = $request['mmail']; $terms = $request['terms']; $user = new User(); $user->email = $email; $user->username = $username; $user->password = $password; $user->mmail = $mmail; $user->terms = $terms; $user->save();
I need to know if it is possible to simplify my code incase I add new sign up options. What I’m trying to do is create a variable for each item in the $request
array which can then be used by the $user->sqltable = $sqltableitem
Something like
foreach ($REQUESTITEM?? as $???){ ??? }
Is this possible and any other suggestions?
Advertisement
Answer
You don’t need to create a variable for each element. Just use mass assignment feature:
$user = User::create($request->all());
One this clause does exactly the same as all your posted code.
Don’t forget to fill $fillable
array:
class User extends Model { protected $fillable = ['email', 'username', 'password', 'mmail', 'terms']; }
If you want to bcrypt
password manually, the right way to do this will be creating mutator:
class User extends Model { public function set setPasswordAttribute($value) { $this->attributes['password'] = bcrypt($value);; } }