как вставить данные в несколько таблиц в laravel 6 - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужна помощь для вставки данных в несколько таблиц после регистрации пользователя. Предположим, у меня есть приведенный ниже код, каков наилучший способ создания нового пользователя и сохранения данных в нескольких таблицах.

RegisterUser Trait

<?php

namespace App\Traits;

use App\User;
use App\Profile;
use App\Account;
use Keygen;

trait RegisterUser
{
    public function registerUser($fields)
    {   


        $user = User::create([

            'username'      => $fields->username,
            'accno'        =>  $this->generateAccountNumber(),
            'email'      => $fields->email,
            'password'  => $fields->password = bcrypt(request('password')),
            'roles'  => $fields->roles,
            'activation_code' =>  $this->generateToken()
        ]);

            Profile::create([
                'accno' => $user->accno,
                'username' => $user->username,
                'acc_type'      => $fields->acc_type,
                'firstname'      => $fields->firstname,
                'lastname'      => $fields->lastname,
                'nationality'     => $fields->nationality,
                'occupation'     => $fields->occupation,
                'address'     => $fields->address,
                'city'     => $fields->city,
                'state'     => $fields->state,
                'zipcode'     => $fields->zipcode,
                'phoneno'     => $fields->phoneno,
                'dob'     => $fields->dob,
                'gender'     => $fields->gender,
                'martial_status'     => $fields->martial_status,
                'user_image'     => $fields->user_image,
            ]);

            Account::create([
                'accno' => $user->accno,
                'username' => $user->username,
            ]);





            return $user;

    }

с этим контроллером registration;

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Http\Requests\RegistrationRequest;
use App\Traits\RegisterUser;

class RegistrationController extends Controller
{
    use RegisterUser;

    public function show()
    {
        return view('auth/register');
    }

    public function register(RegistrationRequest $requestFields)
    {
      //calling the registerUser method inside RegisterUser trait.
      $user = $this->registerUser($requestFields);

      return redirect('/login');

     }
}

, но теперь каждый раз, когда я пытаюсь зарегистрировать пользователя, я получаю сообщение об ошибке «страница не найдена» (404) и данные вставляются только пользователю таблица.

1 Ответ

0 голосов
/ 08 апреля 2020

Не меняйте контроллер реестра. Лучше всего использовать наблюдателя с командой

php artisan make: observer RegisterObserver -m Users

Наблюдатель создан и выполняет свою работу в созданном методе

Затем в Поставщик файлов AppServiceProvider Введите метод загрузки этой команды

User:observe(RegisterObserver::class)

Чтобы перенаправить на нужную страницу, измените это

protected $redirectTo={path}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...