У меня есть кодовая база Laravel, записи которой зашифровываются перед их вставкой в базу данных Mysql.Шифрование выполняется с использованием Crypto методов библиотеки php-encryption .Если я хочу найти запись, основанную на одном из зашифрованных значений, работает циклически по всем записям:
$records = TheModel::all();
foreach ($records as $record){
if ($record->thefield == $value) { // thefield is decrypted in the Eloquent model definition
print $record->id;
}
}
К сожалению, это не очень масштабируемо.БД все еще довольно мала, но быстро растет, поэтому мне нужно изменить этот код, чтобы фактически выполнить запрос.
Итак, я попробовал следующий код:
$encryptedValue = \App\Crypt::encryptData($value);
$records = TheModel::where('thefield', $encryptedValue)->get();
foreach ($records as $record){
print $record->id;
}
Но это ничего не возвращает.Поэтому я нашел этот SO вопрос , предлагается добавить '0x'
, обернуть его в BIN2HEX()
или HEX()
или добавить x
перед ним (например, x'abcd'
).
Я попытался добавить '0x'
(что не работает), но я не уверен, как я мог бы включить другие идеи в мой код.
Кто-нибудь знает, как я мог опробовать эти идеис моим кодом?