2015-06-03 5 views
0

Я хочу получить идентификатор пользователя в middleware, выполнив поиск по электронной почте. Я думал о том, как это сделать одним из двух способов.Laravel 5 - введите ID другим полем надлежащим образом

Во-первых, создание функции в модели User:

public function getIdByMail($query, $q) { 
    return $query->select('id')->where('email', $q); 
} 

Во-вторых, используя эту функцию в моем промежуточного

use App\User; 
... 
$user = User::getIdByMail($user_id); 

И это не работает, и я не уверен даже, что это правый путь ...

+1

Попробуйте 'return $ query-> select ('id') -> где ('email', $ q) -> first();' Не знаете, почему вы хотите это сделать, зарегистрированный пользователь? – haakym

+0

Эй, спасибо за помощь! Вы не думаете, что лучше использовать модель для таких вызовов в БД? –

+1

Добро пожаловать. Можете ли вы сначала сказать мне, ПОЧЕМУ вы пытаетесь получить пользователя по электронной почте. Лично я просто делал '$ user = User :: find ($ user_id) -> id;' – haakym

ответ

2

Это должно быть сделано. Нет необходимости в дополнительных методах в модели. Красноречивый делает все довольно простым.

$id = User::where('email', $email)->first()->id; 
+1

Альтернатива: '$ id = Пользователь :: where ('email' , $ email) -> first (['id']); ' –

+0

Спасибо! Но не более ли «правильный путь» взаимодействовать с БД только с модели? –

+1

@JeremyBelolo Можно утверждать об этом наверняка, но преобразовывая этот oneliner в метод в модели, а затем называть его просто слишком много для чего-то такого простого. Если запрос более сложный или используется много, то перемещение его имеет смысл. –

Смежные вопросы