簡體   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