繁体   English   中英

Laravel 中区分大小写的 where 语句

[英]Case-sensitive where statement in laravel

如何与 Laravel 进行区分大小写的字符串匹配?


SELECT * FROM `invites` WHERE `token`='OGwie2e2985tOEGewgu23hUFs'

可以做为

Invite::where('token',$token)->first()


如果我想要区分大小写的匹配,我需要使用这样的语句(或类似的,据我所知):

SELECT * FROM `invites` WHERE BINARY `token`='OGwie2e2985tOEGewgu23hUFs'

我最好的猜测是:

Invite::whereRaw("BINARY `token`='{$token}'")->first()

但是我的输入没有经过准备好的语句,对吗?

你需要使用 DB::raw(),也许像

Invite::where(DB::raw('BINARY `token`'), $token)->first();

或者:

Invite::whereRaw("BINARY `token`= ?",[$token])->first()

有点晚了,但这仍然不是更好的选择吗?

Invite::whereRaw("BINARY `token`= ?", array($token))->first()

我知道这个问题很老,但以防万一有人偶然发现它。 在撰写本文时,Laravel 是版本 8,这是有效的:

在您的迁移中:

$table->string("token")->charset("utf8")->collation("utf8_bin")->nullable();

这将实现区分大小写,而无需修改每个查询,前提是您尚未处理现有架构。 由于该问题不提供有关结构是否已创建的上下文,因此如果您始终希望将列查询为区分大小写,则这可以适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM