首先,在thinkphp中,我們可以通過Db類來操作數據庫。我們可以使用Db類的table方法來指定要操作哪個數據表,然后調用相應的查詢方法進行操作。在進行模糊查詢時,我們可以使用like方法。需要模糊匹配的字段名稱作為該方法的第一個參數,需要匹配的字符串作為第二個參數。例如,我們要查詢名字包含“張”的所有用戶,可以這樣寫代碼:
Db::table('user')->where('name',?'like',?'%張%')->select();
這條語句中,where方法的第一個參數是需要查詢的條件,其中’name’是數據表中的字段名稱,第二個參數’like’表示我們要進行模糊匹配,第三個參數’%張%’是需要匹配的字符串。使用%通配符,可以匹配包含任意數量字符的字符串,因此可以找到所有用戶名中包含“張”的用戶。
除了使用Db類提供的查詢方法外,ThinkPHP還提供了一些更加高級的查詢方式,如模型查詢和關聯查詢等等。定義模型類能夠簡化查詢,因為模型查詢是通過使用定義的模型類實現的。例如,我們可以在User模型中定義一個searchByName方法,用于查詢名字中包含指定字符串的所有用戶:
class?User?extends?Model { ????public?function?searchByName($keyword) ????{ ????????return?$this->where('name',?'like',?'%'?.?$keyword?.?'%')->select(); ????} }
在這個方法中,$this代表當前User模型的對象,where方法和上面介紹的一樣,只是將Db類換成了$this。我們可以封裝這個查詢方法,以便在應用程序的任何地方都能夠重復使用它
立即學習“PHP免費學習筆記(深入)”;
class?User?extends?Model { ????public?static?function?searchByName($keyword) ????{ ????????return?self::where('name',?'like',?'%'?.?$keyword?.?'%')->select(); ????} }
這里我們將searchByName方法改為靜態方法,并將$this換成了self,這樣就可以在任何地方直接調用User::searchByName()方法進行查詢了。
關聯查詢是通過使用JOIN語句將多個相關的數據表連接起來進行查詢的方法。ThinkPHP中的關聯查詢是通過定義模型關聯來實現的,具體實現方式超出了本文的范疇,但是需要注意的是,當進行模糊查詢時,JOIN語句會降低查詢效率,這時可以考慮先進行模糊查詢,再進行關聯查詢,或者使用緩存等方式來提高查詢速度。