Запрос зашифрованных данных модели в Laravel


Требование приложения, которое я делаю, состоит в том, чтобы все пользовательские данные (электронные письма, адреса, дата рождения и т. Д.) Были зашифрованы. Итак, я использую черту, подобную той, что найдена здесь. Это, однако, вызывает проблему при запросе данных, как показано ниже.

$user = User::where("email", "=", $email);

Поскольку я ищу зашифрованные данные, приведенный выше запрос не будет работать должным образом.

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

$data = User::all();
$cnt = count($data);
for($i=0; $i<$cnt; $i++){/* decrypt record i */}

Но это очень непрактично и дорого. Есть ли лучшее решение этой проблемы?

Author: Syscall, 2018-04-01

1 answers

Это означает, что в вашей бд вы храните зашифрованную электронную почту, верно?

Просто запросите вот так..

$user = User::where("email", Crypt::decrypt($email));
echo Crypt::decrypt($user->email); //result
 0
Author: ZeroOne, 2018-04-01 07:07:59