Как проверить, существует ли пользователь в моей таблице или перенаправить обратно с сообщением с помощью Laravel 5.6?
Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of Illuminate\Http\RedirectResponse given, called in C:\wamp\www\zainsurgalt\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 35
protected function create(array $data)
{
$isEmailExists = Niigem::where('email', $data['email'])->count();
if ($isEmailExists){
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
else{
return Redirect::back()->withErrors(['msg', 'The Message']);
}
}
Я добавил сюда свой метод создания
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Niigem;
use Validator;
use Illuminate\Support\Facades\Redirect;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;
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|max:255',
'email' => 'required|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
protected function create(array $data){
$validator = Validator::make($data, [
'name' => 'required|string',
'email' => 'required|string|email|exists:niigems',
'password' => 'required|string',
]);
if ($validator->fails()) {
return Redirect::back()
->withErrors($validator)
->withInput();
}
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
Также покажите нам, где вы пытаетесь вызвать этот метод create.
@ChukwuemekaInya в RegisterController
В каком состоянии ... Существуют ли они или нет? и как называется таблица, по которой вы проверяете?
Таблица Niigem при регистрации почты пользователя существует в Niigem table, теперь можно зарегистрировать, если не существует, обратное сообщение.






Вам нужно что-то вернуть при создании пользователя.
protected function create(array $data)
{
$isEmailExists = Niigem::where('email', $data['email'])->count();
if ($isEmailExists){
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
return ........ you need to return something here
} else {
return Redirect::back()->withErrors(['msg', 'The Message']);
}
}
Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of Illuminate\Http\RedirectResponse given, called in C:\wamp\www\zainsurgalt\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 35 Та же ошибка. Я даже не понимаю ошибку
что ты вернул? Пользователь?
Спасибо, сэр, я нашел решение, которое искал. 'email' => 'required|max:255|unique:users|exists:niigems',, я думаю, эта линия работает хорошо. т
Я вижу, вы пытаетесь создать нового пользователя, если он существует в таблице niigem. Чтобы сделать это способом Laravel, вам необходимо выполнить проверку с помощью класса validation Laravel. Итак, это должно работать:
protected function create(array $data)
{
$validator = Validator::make($data, [
'name' => 'required|string',
'email' => 'required|string|email|exists:niigem',
'password' => 'required|string',
]);
if ($validator->fails()) {
return Redirect::back()
->withErrors($validator)
->withInput();
}
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of Illuminate\Http\RedirectResponse given, called in C:\wamp\www\zainsurgalt\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 35покажите нам место, где вы пытаетесь использовать этот метод create
Позвольте мне обновить свой вопрос, и я использую в своем RegisterController
Пожалуйста, сделай. Это поможет. Также сообщите нам, в каком контроллере находится этот метод.
'email' => 'required|max:255|unique:users|exists:niigems', эта строчка мне очень помогла. Спасибо, сэр. Я думаю мы нашли решение
Видимый. Что у вас в файле routes?
Хороший. Рад, что смог помочь. Удачного кодирования.
Другой способ:
Niigem::firstOrCreate(['email' => '[email protected]'], ['name'=> $data['name'], 'password' => bcrypt($data['password'])]);
Пожалуйста, используйте этот запрос, вы можете использовать оба условия в соответствии с вашими потребностями:
$ user = Niigem :: where ('электронная почта', '=', Input :: get ('email')) -> first ();
if ($ user === null) {
// пользователь не существует
}
если ($ пользователь! == нуль)
{
// пользователь не существует
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|max:255|unique:users|exists:niigems',
'password' => 'required|min:6|confirmed',
]);
}
protected function create(array $data)
{
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
Вы хотите создать новые
user, если они есть в таблицеnigem?