我在一個項目中使用Laravel 5.1和雄辯的ORM。我需要查詢數據庫以查找使用其名稱或部分名稱的人員。如何使用whereRaw()來清理Laravel查詢?
如果一個人名爲約翰Doelington,我希望所有的搜索詞john
,doelin
,john doe
發現約翰Doelington。但是,名字和姓氏存儲在不同的列中。目前我使用此查詢:
$people = Person::whereRaw(
'CONCAT(first_name, \' \', last_name)
LIKE \'%'.$search.'%\'')
->get();
看着我看到了很多錯誤的日誌 - 每次有'
象徵它打破了查詢時間。看起來我在whereRaw()
函數的安全區域之外,有人可以通過上帝知道SQL是什麼。
我應該怎麼做嗎?
我應該手動淨化輸入?如果是這樣,我該怎麼辦?刪除'
還有什麼?而如果查詢實際上必須包含'
符號呢?
也許有執行此查詢一個更安全的方式?在使用whereRaw()
時,我可以使用Eloquent但傳遞參數來查詢PDO樣式嗎?
如果它使差別,我使用的是MySQL數據庫。
我知道我可以爲全名創建連接列,但是在使用此備用連接之前,我正在尋找一個Eloquent解決方案。