#php #laravel
#php #laravel
Вопрос:
Я пытался создать систему токенов / систему приглашений для моего приложения laravel, но у меня возникли некоторые проблемы, поскольку я новичок в laravel.
В любом случае, это мой RegisterController.php (я использую значение по умолчанию включено, но я добавил к нему)
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return IlluminateContractsValidationValidator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'code' => ['required', 'required', 'string', 'exists:codes,code',]
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return AppUser
*/
protected function create(array $data)
{
$usedcode = $data['code'];
$code = DB::table('codes')->where('code', $usedcode)->first();
$invby = $code->by;
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'by' => $invby,
]);
$code->user = $usedcode;
$code->save();
}
Как вы можете видеть из приведенного выше кода, в настоящее время он работает для проверки кода приглашения, но дело в том, что он пропускает обновление других вещей.
По сути, я пытаюсь сделать так, чтобы после создания пользователя он также обновлял таблицу «коды», чтобы установить в столбце «пользователь» идентификатор вновь зарегистрированных пользователей, а затем также пытался обновить таблицу пользователей, чтобы установить в столбце «by» идентификатор, который находится в таблице кодов подстолбец «by»
Итак, в целом, я пытаюсь получить новый идентификатор пользователя, а затем вставить его в столбец users в таблице «коды».
Затем я также пытаюсь захватить столбец «by» из «codes», чтобы затем обновить его в столбце таблиц «users», а также «by».
Я пытался его изменить, поискал в Google, и это мое последнее средство.
С уважением.
Ответ №1:
Я не думаю, что вы можете использовать save()
on $code
, поскольку это не ссылка на модель, это просто коллекция, полученная из таблицы. Попробуйте сохранить данные кода с DB::insert
помощью или DB::update
. В качестве альтернативы вы можете создать модель для своей таблицы кода.
Комментарии:
1. Эйо, у меня есть модель для моих кодов, и я также включаю ее в начало, делая: use App Codes;
2. Поэтому вместо
DB::table('codes')->where()
этого попробуйтеCodes::where
при получении вашей коллекции.3. У вас также есть несколько советов по правилам проверки, чтобы проверить, не используется ли токен? В основном в моей таблице кодов я получил столбец «used», и я хочу проверить, что используемый столбец равен 0
4. Я попытался выполнить следующее: « return Validator::make($data, [ ‘name’ => [‘required’, ‘string’, ‘max: 255’, ‘unique:users’], ’email’ => [‘required’, ‘string’, ’email’, ‘max: 255’, ‘unique:пользователи’], ‘пароль’ => [‘требуется’, ‘строка’, ‘минимум: 8’, ‘подтверждено’], ‘код’ => [‘требуется’, ‘строка’, ‘существует: коды,code’, Rule::unique(‘codes’)->where(function ($query) { return $query->where(‘used’, 0); ])« но он выдает синтаксическую ошибку, неожиданную ‘]’