我們在使用thinkphp開發的時候,有時候會用到getById('1')這個方法快速的獲取一條信息的內容,這個方法比用where(" id =1 ")->find()好用多了,同時查詢效率也比find快速。
很多人在剛開始接觸這個方法的時候,沒有多留意它的內部實現機制,僅僅認為是通過id來獲取信息,而事實並非如此。
例如有的系統裡存在getByTitle("nihao")、getByMoney('1000')這類方法,這些與剛才提到的getById('1')很相似,同時實現的功能原理也與getById('1')一樣。
其實類似這種getById($id)、getByTitle($title)、getByUserName($username)等等,以“getBy+字段”的方法有個專有名詞叫做“魔術方法”,它後面的字段可以是數據表中的任何一個字段,返回結果只能是查詢出來的第一條數據,這種方法查詢的效率很高,很好記住。
有時候我們的字段不是連起來的,例如:user_name 這樣子的字段,我們是不是這樣子寫(getByUser_name($name))呢?答案是否定的,thinkphp中不支持這樣子的方法,我們需要使用駝峰法來命名,應該寫成這樣 getByUserName($name)就可以了!