Создать пользователя в Laravel с настраиваемыми полями - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь создать пользователя в laravel, используя собственную функцию авторизации laravel.Я включил его и хочу добавить некоторые из моих собственных значений в поля в таблице пользователей.

Сейчас я получаю эту ошибку, но не знаю, как ее исправить.Есть идеи?:

Преобразование массива в строку (SQL: вставить в users (name, email, password, activation_token, is_active, is_expert, is_flag, is_subscriber, profile_img, updated_at, created_at) значения (Хенрик Тобиассен, tarzan@hotmail.com, $ 2y $ 10 $ .xmKCnSdC8vogY47mbwRVOVehXJIedLMJ / gpfNgluPR9QpOtgyJ1m, 4633, 0/0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ПО ФИЛЬМАМ.jpg, 2019-03-10 21:12:29, 2019-03-10 21:12:29)

App / user.php

 /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'password', 'remember_token', 'activation_token', 'is_active', 'is_expert', 'is_flag', 'is_subscriber', 'profile_img',
    ];

RegisterController

 /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],


        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'activation_token' => [rand(1000, 9999)],
            'is_active' => '0',
            'is_expert' => '0',
            'is_flag' => '0',
            'is_subscriber' => '0',
            'profile_img' => 'uploads/profile_pics/default.jpg',
        ]);
    }

Ответы [ 3 ]

2 голосов
/ 11 марта 2019

Это может происходить, потому что вы отправляете массив, а не число или строку, в поле activ_token.

Так что вместо

'activation_token' => [rand(1000,9999)],

делай

'activation_token' => rand(1000,9999),
1 голос
/ 11 марта 2019

кажется, вы пытаетесь отправить массив

'activation_token' => [rand(1000,9999)]

вместо строки / числа

Исправить ->

'activation_token' => rand(1000,9999),
1 голос
/ 11 марта 2019

Вероятно, причина в том, что вы сделали вашу случайную переменную массивом. Снимите квадратные скобки вокруг него. Теперь он вернет строку, а не массив.

Проверьте пример внизу для демонстрации.

Исправленный код:

    protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'activation_token' => rand(1000, 9999),
        'is_active' => '0',
        'is_expert' => '0',
        'is_flag' => '0',
        'is_subscriber' => '0',
        'profile_img' => 'uploads/profile_pics/default.jpg',
    ]);
}

Пример: http://sandbox.onlinephpfunctions.com/code/1977ba4dbe2f22870e0e81a628749c39c367747a

...