我在 users
表中有一个 phone number
列。电话号码有不同的格式:
123-456-7890
(123) 456 7890
等...
我想通过删除多余的字符进行比较并检索结果。
这是mysql查询:
SELECT * FROM users WHERE REPLACE(REPLACE(REPLACE(`phonenumber`, '-', ''), '(', ''), ')', '') = '1234567890'
我如何在 Laravel Eloquent 中做到这一点?
我知道最好的选择是在 DB 列上强制格式化。我想知道我们是否可以使用 Laravel Eloquent 来做到这一点。
最佳答案
它不会与数据库无关,但是:
$query->whereRaw('REPLACE(REPLACE(REPLACE(`phonenumber`, '-', ''), '(', ''), ')', '') = ?', [$phoneNumber]);
请参阅 https://laravel.com/docs/5.7/queries#raw-expressions 上的原始方法
更好的方法是在将数字插入数据库之前删除这些字符。
关于php - Laravel Eloquent 在哪里替换和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52915924/