Laravel eloquent 哪里替换和比较

Rag*_*a N 2 php mysqli laravel eloquent

phone numberusers表中有一列。电话号码有不同的格式:

  • 123-456-7890

  • (123) 456 7890

    ETC...

我想通过删除多余的字符进行比较并检索结果。

这是mysql 查询

SELECT * FROM users WHERE REPLACE(REPLACE(REPLACE(`phonenumber`, '-', ''), '(', ''), ')', '') = '1234567890'
Run Code Online (Sandbox Code Playgroud)

我如何在 Laravel Eloquent 中做到这一点?

我知道最好的选择是强制对数据库列进行格式化。我想知道我们是否可以使用 Laravel Eloquent 来做到这一点。

Dev*_*von 6

它不会与数据库无关,但是:

$query->whereRaw('REPLACE(REPLACE(REPLACE(`phonenumber`, '-', ''), '(', ''), ')', '') = ?', [$phoneNumber]);
Run Code Online (Sandbox Code Playgroud)

请参阅原始方法https://laravel.com/docs/5.7/queries#raw-expressions


更好的方法是在将数字插入数据库之前删除这些字符。