ThinkPHP 提供了極具特色的「魔術方法」查詢功能,如 getById(1)、getByTitle('hello'),能以極簡潔的語法完成單筆資料查詢。本文深入解析其原理、命名規則與使用限制。
// 傳統寫法
$user = M('User')->where("id=1")->find();
// 魔術方法寫法(更簡潔、效率略高)
$user = M('User')->getById(1);
getBy + 欄位名SELECT * FROM table WHERE field = value LIMIT 1find())__call() 魔術方法攔截並解析資料庫欄位若為底線命名(如 user_name),不可直接寫成 getByUser_name(),必須轉為駝峰式:
| 資料庫欄位 | 正確方法名 | 錯誤寫法 |
|---|---|---|
| id | getById() | getById() |
| user_name | getByUserName() | getByUser_name() |
| email_address | getByEmailAddress() | getByEmail_address() |
| create_time | getByCreateTime() | getByCreate_time() |
where(array(
'status' => 1,
'type' => 'vip'
))->find();
where() 方法呼叫開銷,微幅較快