Как создать нового пользователя в Laravel?

Я создал модель:

<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class ClientModel extends Eloquent implements UserInterface, RemindableInterface {

protected $connection = 'local_db';
protected $table      = 'administrators';
protected $fillable   = ['user_id'];

public function getAuthIdentifier()
{
return $this->username;
}

public function getAuthPassword()
{
return $this->password;
}

public function getRememberToken()
{
return $this->remember_token;
}

public function setRememberToken($value)
{
$this->remember_token = $value;
}

public function getRememberTokenName()
{
return 'remember_token';
}

public function getReminderEmail()
{
return $this->email;
}
}

Когда я пытаюсь использовать это так:

ClientModel::create(array(
'username' => 'first_user',
'password' => Hash::make('123456'),
'email'    => 'my@email.com'
));

Создает пустую запись в БД …

введите описание изображения здесь

3

Решение

Ты используешь create Метод (массовое назначение), поэтому он не работает, потому что у вас есть это:

// Only user_id is allowed to insert by create method
protected $fillable = ['user_id'];

Поместите это в свою модель вместо $fillable:

// Allow any field to be inserted
protected $guarded = [];

Также вы можете использовать альтернативу:

protected $fillable = ['username', 'password', 'email'];

Узнайте больше о Массовое задание на Laravel Веб-сайт. Хотя это может решить проблему, но имейте это в виду. Вы можете использовать этот подход вместо этого:

$user = new User;
$user->username = 'jhondoe';
// Set other fields ...
$user->save();
1

Другие решения

Я думаю, ты делаешь это слишком сложным. Нет необходимости делать это таким образом. По умолчанию у вас есть User модель создана, и вы сможете легко создать пользователя следующим образом:

$user = new User();
$user->username = 'something';
$user->password = Hash::make('userpassword');
$user->email = 'useremail@something.com';
$user->save();

Может быть, вы хотели достичь чего-то большего, но я не понимаю, что вы используете здесь так много методов, если вы не измените ввод или вывод здесь.

5