php - Laravel Eloquent 在哪里替换和比较

标签 php laravel mysqli eloquent

我在 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/

相关文章:

php - 使用 xampp 在 laravel 中路由

php: mysql 数据库连接正常但无法执行查询

php - 如何解决未在SSH中设置的术语环境变量

php - 如何在 Laravel 中加载嵌套关系

php - 通过 postgres 中的单个查询访问一组值

php - Laravel Auth 与 React 前端的集成

php - 我可以将 `new mysqli()` 制作成 php 类吗?

php - 获取数据并使用循环插入它 (MSQL/I)

php - tar 实用程序、PHP 和 exec

php - 删除结帐顶部链接 magento