Laravel 5, как проверить, существует ли пользователь в моей другой таблице - PullRequest
0 голосов
/ 17 сентября 2018

Как проверить, существует ли пользователь в моей таблице, или перенаправить сообщение с помощью Laravel 5.6?

Ошибка типа: аргумент 1, передаваемый в Illuminate \ Auth \ SessionGuard :: login (), должен бытьэкземпляр Illuminate \ Contracts \ Auth \ Authenticatable, заданный экземпляр Illuminate \ Http \ RedirectResponse, вызываемый в C: \ wamp \ www \ zainsurgalt \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Auth \ RegistersUsers.php на линии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']),
    ]);

}

}

Ответы [ 5 ]

0 голосов
/ 19 сентября 2018
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']),
    ]);
}
0 голосов
/ 18 сентября 2018

Пожалуйста, используйте этот запрос, вы можете использовать оба условия в соответствии с вашими потребностями:

$ user = Niigem :: where ('email', '=', Input :: get ('email')) -> first ();

if ($ user === null) {

// пользователь не существует

}

if ($пользователь! == ноль)

{

// пользователь не существует

}

0 голосов
/ 17 сентября 2018

Я вижу, вы пытаетесь создать нового пользователя, если он существует в таблице 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']),
    ]);
}
0 голосов
/ 17 сентября 2018

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

Niigem::firstOrCreate(['email' => 'dummy@domain.com'], ['name'=> $data['name'], 'password' => bcrypt($data['password'])]);
0 голосов
/ 17 сентября 2018

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

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']);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...