#laravel
#laravel
Вопрос:
Я использую команды в laravel и хочу добавить поле названия компании в свою регистрационную форму вместо того, чтобы использовать стандарт:
'name' => explode(' ', $user->name, 2)[0]."'s Team",
Я все еще хочу сохранить поле с именем name, но использовать данные полей ввода, я попытался изменить метод на:
protected function createTeam(User $user)
{
$user->ownedTeams()->save(Team::forceCreate([
'user_id' => $user->id,
'name' => $user['company_name'],
'personal_team' => true,
]));
}
но это работает не так, как предполагалось. Мой register.blade.php является:
<div>
<x-jet-label value="{{ __('Company Name') }}" />
<x-jet-input class="block mt-1 w-full" type="text" name="company_name" :value="old('company_name')" autofocus autocomplete="company_name" />
</div>
моя миграция не изменилась, поскольку я хочу принудительно ввести имя через свою форму, а не генерировать его на основе пользовательского ввода name.
Полный метод createNewUser:
public function create(array $input)
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this->passwordRules(),
])->validate();
return DB::transaction(function () use ($input) {
return tap(User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]), function (User $user) {
$this->createTeam($user);
});
});
}
/**
* Create a personal team for the user.
*
* @param AppModelsUser $user
* @return void
*/
protected function createTeam(User $user)
{
$user->ownedTeams()->save(Team::forceCreate([
'user_id' => $user->id,
'name' => $user['company_name'],
'personal_team' => true,
]));
}
}
Комментарии:
1. насколько я понимаю, вы просто хотите добавить новый столбец с названием название компании, верно?
2. @NurbekBoymurodov Я имею в виду, что когда вы создаете пользователя в livewire teams, по умолчанию название команды выполняется с помощью ‘name’ => explode (‘ ‘, $user-> name, 2) [0]. «Команда», но я хочу использовать форму и иметь людейзаполните название своей компании.
3. хорошо, просто вам нужно отправить переменную $input с $user, это будет похоже на эту функцию (User $user, $input) { $this->createTeam($user); }); и ваша функция будет защищена функцией createTeam(User $user, $input) теперь вы можете использовать $введите[‘имя_компании’];