Laravel 5.4.36 не работает должным образом для регистрации нового пользователя в контейнере AWS ECS

У меня есть обычай RegisterController который использует RegistersUsers черта для регистрации пользователей.

use Illuminate\Support\Facades\Validator;

class RegisterController extends Controller
{
use RegistersUsers;
...
}

И в файле web.php (где определены маршруты) я делаю следующее для регистрации маршрутов:
Route::auth();

Со стороны просмотра или внешнего интерфейса у меня есть настроенное представление (register.blade.php), где я добавляю дополнительные поля в форму регистрации пользователя, как показано ниже:
введите описание изображения здесь

И на моем RegisterController у меня есть следующий метод для проверки формы

/**
* Get a validator for an incoming registration request.
*
* @param  array  $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'gitHubUserName' => 'required|string|max:255|unique:users',
'gitHubToken' => 'required|string|min:1',
'password' => 'required|string|min:6|confirmed',
]);
}

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, что моя таблица пользователей не хранит имя пользователя GitHub и токен GitHub.

у меня есть create функция на моем RegisterController который заботится об управлении (inserting) данные в соответствующие таблицы, когда проверка проходит (users это просто таблица обычных пользователей, заданная миграцией пользователей по умолчанию Laravel, и у меня есть еще одна таблица, в которой хранятся github userName и GitHubPwd).

Если я сделаю php artisan --version, Я имею Laravel Framework 5.4.36 установлены. Также у меня есть PHP 7.1.9 установлены.

Теперь это работает абсолютно нормально в моей локальной среде разработки MAMP.

В тот момент, когда я помещаю это в контейнер AWS ECS и нажимаю кнопку «Регистрация» в моей форме регистрации пользователя, я вижу странные ошибки … так что это не работает.

Ниже приведены ошибки:

Ошибка 1: исключение PDO:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'gitHubUserName' in 'where clause'

Ошибка 2:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'gitHubUserName' in 'where clause' (SQL: select count(*) as aggregate from `users` where `gitHubUserName` = tony)

Короче говоря, я заметил, что вместо вызова моего собственного валидатора для проверки запроса формы, laravel предоставил RegisterUser класс черты вызывает валидатор модели как показано ниже:

введите описание изображения здесь

Поэтому я сослался на документацию Laravel Вот а также попробовал другой подход, добавив ручной валидатор, как описано в документации:

 $validator =  Validator::make(request(), [
'name' => 'required|string|max:255|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'gitHubUserName' => 'required|string|max:255|unique:users',
'gitHubToken' => 'required|string|min:1',
'password' => 'required|string|min:6|confirmed',
]);

if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}

Я тоже сделал composer dump-autoload, php artisan config:clear, php artisan cache:clear после внесения вышеуказанного изменения в код.

Так что теперь я вижу другую ошибку:

введите описание изображения здесь

А вот частичная (верхняя часть строк) стека вызовов:

in Controller.php (line 82)

at Controller->__call('validator', array(array('_token' => 'S0c2YolcTS4AzvxIaehe6OMZ0E4LZKnFTd55nmio', 'name' => 'Tony', 'email' => '[email protected]', 'password' => 'Secret', 'password_confirmation' => 'Secret', 'gitHubUserName' => 'attres', 'gitHubToken' => '4365463463546354635465')))
in RegistersUsers.php (line 31)
at RegisterController->register(object(Request))

И снова, все отлично работает в моем локальном док-контейнере или в среде разработки MAMP. Когда я создаю новый образ, контейнер и запускаю его в контейнере AWS ECS, я вижу эту проблему. Кто-нибудь знает, что может быть причиной такого странного поведения?

1

Решение

Я наконец понял свою проблему. Я не могу поверить, что я упустил синтаксис правила проверки, пытаясь выяснить причину.

Проблема заключается в этом правиле проверки в Validator::make() метод:

‘gitHubUserName’ => ‘обязательно | строка | макс .: 255 | уникально: пользователи’,

Там не должно быть unique:users потому что в таблице пользователей нет столбца gitHubUserName.

Я изменил правило, как показано ниже, и все снова заработало нормально:

‘gitHubUserName’ => ‘обязательно | строка | макс .: 255’

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]