0

如何使用 like 运算符在 Laravel 中搜索数据,我使用过

encrypt($searchValue); 

或者

Crypt::encryptString($searchValue)

但是两者都返回完整的加密数据,但我需要使用类似运算符的可搜索数据,在这种情况下,当搜索普通文本时,名字是加密格式,它返回 null


User::where('first_name', 'like', '%' . 'abc' . '%')->get();
//it's return null

当我使用

//searchValue is like only 'ab'
User::where('first_name', 'like', '%' . Crypt::encryptString($searchValue) . '%')->get();
//it's also return null 
4

1 回答 1

0

Crypt::encryptString('abc')每次调用它时都会输出一个略有不同的字符串。因此,您不能执行以下操作:

User::where('first_name', 'LIKE', '%abc%')->get();
# OR
User::where('first_name', 'LIKE', '%' . Crypt::encryptString('abc') . '%')->get();

如果您正在加密字符串并将其保存到数据库中,那么关键是您无法将其视为纯文本,并且通过扩展,无法对其进行搜索。

旁注,如果另一个加密字符串具有该序列,您的第一种情况%abc% 可能会返回结果,但这不是搜索未加密值的可靠方法abc,因此您不能依赖它。

于 2021-01-22T14:50:54.840 回答