[英]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.