Как добавить пользователя в другую таблицу после регистрации пользователя в laravel? - PullRequest
0 голосов
/ 29 мая 2019

Я занимаюсь разработкой проекта электронной коммерции на Laravel 5.6 , в котором у меня есть две таблицы для пользователей:

  1. Пользователи для паролей и некоторые другиевещи и
  2. UserDetails таблица для хранения адреса пользователя, телефона, города, пин-кода и т. д.

При регистрации пользователя с сохранением учетных данных в * 1015Таблица * Users Я хочу создать столбец в таблице UserDetails с тем же идентификатором user_id, который был сгенерирован при добавлении в таблицу Users .

Ниже приведеномои миграции:

Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->timestamp('email_verified_at')->nullable();
            $table->rememberToken();
            $table->timestamps();
        });


Schema::create('user_details', function (Blueprint $table) {
            $table->increments('id');
            $table->string('phone')->nullable();
            $table->string('city')->nullable();
            $table->string('pincode')->nullable();
            $table->unsignedInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users');
            $table->timestamps();
        });

Я пытался добавить следующее в create функцию в RegisterController

protected function create(array $data)
    {   
        User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        UserDetails::create([
            'user_id' => Auth::user()->id
        ]);

        return;
    }

Но это не такработы и шоу

Trying to get property 'id' of non-object".

Помогите мне в этом.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Ответ @MateusJunges правильный, но ошибка, которую вы получили после этого, заключается в том, что

«Добавьте [user_id] в свойство, доступное для заполнения, чтобы разрешить массовое присвоение [App \ UserDetails]».

Чтобы устранить эту ошибку, я должен добавить этот код в мою UserDetails модель:

protected $fillable = [
        'user_id'
    ];

Вы можете сослаться здесь .

После этого весь код @MateusJunges правильный.

0 голосов
/ 29 мая 2019

Вы можете изменить функцию create на app/Http/Controllers/Auth/RegisterController.php,

, которая по умолчанию:

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

Просто измените ее на

protected function create(array $data)
{
    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
    UserDetails::create([
        'user_id' => $user->id
    ]);

    return $user;
}
...