Laravel 5.5 Check Пользователь существует с тремя параметрами в двух таблицах - PullRequest
0 голосов
/ 08 февраля 2019

Я разрабатываю модуль регистрации, я хочу проверять пользователей, зарегистрированных в моем веб-приложении, с помощью электронной почты, национального кода или мобильного телефона, у меня есть две таблицы, пользователи и userInfo, я храню электронную почту в таблице пользователей и храню национальный код и мобильный телефон в таблице userInfo, Я хочу написать код, чтобы определить, есть ли в моих двух таблицах электронная почта, код национального или мобильного телефона пользователя, я показываю текст предупреждения, зарегистрированного пользователем на моем сайте, пожалуйста, помогите мне сделать эту работу,

Iиспользуйте пошаговую форму, и я пишу ajax для вызова метода, чтобы выполнить эту задачу, обратите внимание, что у пользователя может быть три совпадения или только одно совпадение, спасибо за вашу помощь:)

Вот код ajax:

    $.ajax({
    url: url',
    type: 'POST',
    data: {
        _token: CSRF_TOKEN ,
        code:code,
        email:email,
        mobile:mobile,
    },
    dataType: 'JSON',
    success:function(data) {
        //return data
    }
});

и вот мой метод контроллера

public function checkUser(Request $request)
{
    $email = $request->email;
    $mobile = $request->mobile;
    $code = $request->code;

    //here the query to detect user exist with three params
}

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Если вы поместите уникальный идентификатор в вашу таблицу, база данных автоматически обнаружит его и выдаст ошибку, но не рекомендуется, чтобы база данных справилась с этим,

Если вы хотите использовать Eloquent, тогда запрос будетвыглядит так

public function checkUser(Request $request)
{
    $email = $request->email;
    $mobile = $request->mobile;
    $code = $request->code;
    $user = User::query()->where('email', '=', $email)->orWhere('mobile','=',$mobile)
            ->orWhere('code', '=',$code)->get();
    if($user) {
     // User already exits
       return;
    }
}

Но эта проверка для меня не очень хорошая, лучше использовать Laravel Requests https://laravel.com/docs/5.7/validation#form-request-validation

Для генерации пользовательского запроса используйте эту команду (php artisan make: request RequestName)

public function rules()
{
    return [
        'title' => 'required|unique:users',
        'mobile' => 'required|unique:users',
        'code' => 'required|unique:users',
    ];
}

Использовать запрос просто

public function checkUser(YourCustomRequest $request)
{
    // Laravel will take care of all fields and check them if they exist in the database
}
0 голосов
/ 08 февраля 2019

Допустим, ваши отношения определены следующим образом:

class User extends Model
{
    public function info()
    {
        return $this->hasOne(UserInfo::class); 
    }
}

class UserInfo extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class); 
    }
}

... тогда вы можете проверить существование этого пользователя примерно так.

$user = User::where('email', $request->email)
    ->whereHas('info', function($query) use($request) {
        $query->where('mobile', $request->mobile)
            ->where('code', $request->code); 
    })
    ->exists();

// user will be false if there's no record matching those parameters

В качестве альтернативы , если вы не определили свои отношения, тогда вам, вероятно, нужно сделать что-то подобное вместо этого.

$user = User::where('email', $request->email)->exists();
$info = UserInfo::where([
    'mobile' => $request->mobile,
    'code'   => $request->code
])->exists(); 

if($user && $info) {
    // user exists 
}

Я бы все равнопредпочитаю перейти с первого варианта:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...