在laravel中雄辩的where子句中连接两列

Posted

技术标签:

【中文标题】在laravel中雄辩的where子句中连接两列【英文标题】:Concatenate two columns in eloquent where clause in laravel 【发布时间】:2019-01-08 03:59:47 【问题描述】:

在我的数据库中,country_codephone_number 是两个不同的字段。用户正在输入一个包含国家代码和电话号码的字符串来登录。为了验证这一点,我必须在雄辩的 where 子句中连接列 country_codephone_number

有人能告诉我怎么做吗?我在下面给出我的查询。

$user  = self::where('phone_number', '=', $username)->get()->first();

【问题讨论】:

【参考方案1】:

您可以将 whereRaw 与原始 SQL 表达式一起使用,并将参数与第二个参数绑定。

whereRaw("CONCAT(`country_code`, `phone_number`) = ?", [$username]);

【讨论】:

【参考方案2】:

试试下面的代码:

$user = self::whereRaw("CONCAT_WS(' ',`country_code`, `phone_number`) = ? ",  [$username])->get()->first();

第一个参数应该是粘合片。

【讨论】:

永远不要将用户来源的变量放在原始表达式中!这为 SQL 注入打开了大门。 好吧,我错了。

以上是关于在laravel中雄辩的where子句中连接两列的主要内容,如果未能解决你的问题,请参考以下文章

laravel 雄辩的 where 子句与枢轴

Laravel 雄辩的 SQL 查询与 OR 和 AND 与 where 子句

Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 use()

使用 where 子句检索数据时,无论如何要检索计数 0 吗? (Laravel 雄辩)

Laravel 在 withCount 方法上使用 where 子句

Laravel“where”子句默认不区分大小写?