2016-05-11 7 views
1

У меня есть следующий код для моей страницы регистрации на моем сайте.Создайте переменную для каждого элемента массива

$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(); 

Мне нужно знать, можно ли упростить мой код. Я добавляю новые параметры регистрации. То, что я пытаюсь сделать, это создать переменную для каждого элемента в массиве $request, который затем может быть использован в $user->sqltable = $sqltableitem

Что-то вроде

foreach ($REQUESTITEM?? as $???){ 
    ??? 
} 

Возможно ли это и какие-либо другие предложения?

ответ

2

Вам не нужно создавать переменную для каждого элемента. Просто используйте mass assignment особенность:

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

Одно это положение делает точно так же, как весь ваш публикуемую код.

Не забудьте заполнить $fillable массив:

class User extends Model 
{ 
    protected $fillable = ['email', 'username', 'password', 'mmail', 'terms']; 
} 

Если вы хотите bcrypt пароль вручную, правильный способ сделать это будет creating mutator:

class User extends Model 
{ 
    public function set setPasswordAttribute($value) 
    { 
     $this->attributes['password'] = bcrypt($value);; 
    } 
} 
+0

ли это также bcyrpt мои пароли ? – Albert

+0

@Albert, я не знаю, какую систему auth вы используете, но если вам нужно сделать это вручную, используйте мутаторы (проверьте обновленный ответ). –

+0

Я сделал это перед предложением, и он отлично работает '$ request ['password'] = bcrypt ($ request ['password']', Нет необходимости в этом другом бите. Я отредактировал вопрос, поэтому вы можете принять его – Albert

Смежные вопросы