при регистрации вставьте данные в 3 таблицы LARAVEL - PullRequest
0 голосов
/ 31 марта 2019

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

Вы должны выбратьесли вы кандидат или работодатель.В моей базе данных у меня есть эти 3 таблицы: users, profile_employee и profile_employer.

Может кто-нибудь показать мне, как создать RegisterController для вставки в таблицу пользователей только адреса электронной почты и пароля, иесли они выбрали кандидата для отправки остальной информации на profile_employee, и если они выбрали работодателя, чтобы отправить их к таблице profile_employer.Спасибо!

Это мои модели для ProfilasdasdasdasdasdasdasdasdasdeEmployeer и ProfileEmployee

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ProfileEmployee extends Model
{
    protected $table = 'profasdasdasdasdile_emploasdasdasdasdyee';
    protected $fillable = [
        'id','usasdasdasder_id', 'fiasdasdasdasdasdst_name', 'laasdasdst_namasdasdasdasdasde','phonasdasdasde', 'casdasdv', 'picasdasdasdasdture', 'adrasdasdasdasdasdess', 'toasdasdasdasdasdasdwn',
    ];
    protected $hidasdasdasdasdasdden = [];
}

и

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ProfileEmployer extends Model
{
    protected $tablasdasdasdasde = 'profileasdasdasdasdasdasdasd_emplasdasdasdasdasdasdoyer';
    protected $fillabasdasdasdasdle = [
        'iasdasdasdd','useasdasdr_iasdasdasdasdasdasd', 'coasdasdasdasdasdmpany_naasdasdasdasdasdme', 'CasdasdasdU_asdasdI', 'phoasdasdasdasdasdne', 'pictasdasdasdasdasdure', 'adasdasdasdasdress', 'towasdasdasdasdasdn',
    ];
    protected $hidasdasdasdden = [];
}

Как мне сделать RegistasdasdasdasdasdasdasderController?

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Без написания какого-либо кода, я думаю, что лучшим способом было бы создать полиморфные отношения, в документации есть пример кода - https://laravel.com/docs/5.8/eloquent-relationships#one-to-one-polymorphic-relations

Так что в вашей таблице пользователей у вас есть userable_type и userable_id(не уверен, что их имена верны).Столбец userable_type будет содержать имя модели либо для вашей таблицы ProfileEmployee, либо для вашей таблицы ProfileEmployer, а для userable_id - внешний ключ отношения.

Как вы можете видеть в документации, вы можете затем получить отношение, и laravel узнаеткакую модель использовать в столбце userable_type.

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

0 голосов
/ 18 апреля 2019

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

class RegisterController extends Controller{

use RegistersUsers;

protected $redirectTo = '/home';

public function __construct()
{
    $this->middleware('guest');
}

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:6|confirmed',
        'type' => 'required|in:employee,employer',
    ]);
}

protected function create(array $data)
{
    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
    // check the user type
    $data['type'] = 'employee' ? $this->createEmployee($user) : $this->createEmployer($user);
}

public function createEmployee($user)
{
    // here you can create Employee profile

    return $user;
}

 public function createEmployer($user)
 {
    // here you can create Employer profile

    return $user;
 }
}

Здесь нам нужно перезаписать два метода: validator и create.

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