Laravel 5, как проверить, что пользователь существует в другой моей таблице

Как проверить, существует ли пользователь в моей таблице или перенаправить обратно с сообщением с помощью 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']),
    ]);

}

}

Вы хотите создать новые user, если они есть в таблице nigem?

Chukwuemeka Inya 17.09.2018 04:42

Также покажите нам, где вы пытаетесь вызвать этот метод create.

Chukwuemeka Inya 17.09.2018 04:43

@ChukwuemekaInya в RegisterController

Ruka Xing 17.09.2018 04:44

В каком состоянии ... Существуют ли они или нет? и как называется таблица, по которой вы проверяете?

Chukwuemeka Inya 17.09.2018 04:52

Таблица Niigem при регистрации почты пользователя существует в Niigem table, теперь можно зарегистрировать, если не существует, обратное сообщение.

Ruka Xing 17.09.2018 04:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
5
2 054
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вам нужно что-то вернуть при создании пользователя.

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\Illumin‌​ate\Foundation\Auth\‌​RegistersUsers.php on line 35 Та же ошибка. Я даже не понимаю ошибку
Ruka Xing 17.09.2018 05:14

что ты вернул? Пользователь?

zjbarg 17.09.2018 05:22

Спасибо, сэр, я нашел решение, которое искал. 'email' => 'required|max:255|unique:users|exists:niigems',, я думаю, эта линия работает хорошо. т

Ruka Xing 17.09.2018 05:27

Я вижу, вы пытаетесь создать нового пользователя, если он существует в таблице 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\Illumin‌​ate\Foundation\Auth\‌​RegistersUsers.php on line 35
Ruka Xing 17.09.2018 05:12

покажите нам место, где вы пытаетесь использовать этот метод create

Chukwuemeka Inya 17.09.2018 05:15

Позвольте мне обновить свой вопрос, и я использую в своем RegisterController

Ruka Xing 17.09.2018 05:16

Пожалуйста, сделай. Это поможет. Также сообщите нам, в каком контроллере находится этот метод.

Chukwuemeka Inya 17.09.2018 05:18
'email' => 'required|max:255|unique:users|exists:niigems', эта строчка мне очень помогла. Спасибо, сэр. Я думаю мы нашли решение
Ruka Xing 17.09.2018 05:20

Видимый. Что у вас в файле routes?

Chukwuemeka Inya 17.09.2018 05:21

Хороший. Рад, что смог помочь. Удачного кодирования.

Chukwuemeka Inya 17.09.2018 05:23

Другой способ:

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']),
    ]);
}

Другие вопросы по теме