FluentPDO 是一個使用 PDO 的 PHP SQL 查詢產生器。它是一個快速且輕巧的庫,具有智慧連接產生器,可自動為您建立表格連接。
用於創建強大查詢的簡單介面
支援任何與 PDO 相容的資料庫
能夠用很少的程式碼建立複雜的 SELECT、INSERT、UPDATE 和 DELETE 查詢
在智慧型 IDE 中使用程式碼補全功能對魔術方法進行類型提示
FluentPDO的穩定發布並積極維護。官方支援 PHP 7.3 到 PHP 8.0,但它可以與 PHP 7 之前的版本一起使用。
FluentPDO 的舊版本。它不再受支持,也不會維護或更新。此版本適用於 PHP 5.4 至 7.1。
這個版本是對 Fluent 的完全重寫。它的主要優點是顯著減少記憶體使用量並提高查詢建立的效能。它還設置了一些額外的限制,以使查詢更易於閱讀和維護。文件也是一個非常常見的要求,版本 3 正在與開發一起完整記錄。詳細資訊和指標將在可用後發布。
Sitepoint - FluentPDO 入門
安裝 FluentPDO 的首選方法是透過 Composer。
在您的composer.json
檔案中新增以下行:
"require": { ... "envms/fluentpdo": "^2.2.0" }
使用composer update
更新您的依賴項,就完成了!
如果您不想使用 Composer,請下載最新版本,在庫目錄中建立目錄Envms/FluentPDO
,然後將此儲存庫放入其中。最後添加:
需要 '[lib-dir]/Envms/FluentPDO/src/Query.php';
到您的應用程式的頂部。注意:您需要一個自動載入器才能使用 FluentPDO,而不更改其原始碼。
建立一個新的 PDO 實例,並將該實例傳遞給 FluentPDO:
$pdo = new PDO('mysql:dbname=fluentdb', '使用者', '密碼');$fluid = new EnvmsFluentPDOQuery($pdo);
然後,建立查詢既快速又簡單:
$query = $fluent->from('comment') ->where('article.published_at > ?', $date) ->orderBy('published_at DESC') ->限制(5);
這將建立以下查詢:
SELECT comment.*FROM commentLEFT JOIN 文章 ONarticle.id = comment.article_idWHEREarticle.published_at > ?ORDER BYarticle.published_at DESCLIMIT 5
要從 select 中獲取數據,我們所做的就是循環返回的數組:
foreach ($query as $row) {echo "$row['title']n"; }
讓我們從傳統的連結開始,如下所示:
$query = $fluent->from('文章') ->leftJoin('用戶ON user.id =article.user_id') ->select('用戶名');
這相當冗長,而且不太聰明。如果您的表使用正確的主鍵和外鍵名稱,您可以將上面的內容縮短為:
$query = $fluent->from('文章') ->leftJoin('用戶') ->select('用戶名');
這更好,但並不理想。然而,不寫任何連接會更容易:
$query = $fluent->from('文章') ->select('用戶名');
太棒了,對吧? FluentPDO 能夠透過將外表名稱新增至要求的欄位之前來為您建立連結。
上面的所有三個片段將創建完全相同的查詢:
從文章中選擇文章.*,用戶名 LEFT JOIN 用戶 ON user.id =article.user_id
最後,在資源完成任務後立即釋放資源總是一個好主意:
$fluid->close();
$query = $fluid->from('article')->where('id', 1)->fetch();$query = $fluid->from('user', 1)->fetch(); // 如果透過主鍵選擇一行,則為較短版本
$values = array('title' => '文章 1', 'content' => '內容 1');$query = $fluent->insertInto('article')->values($values)->execute( );$query = $fluid->insertInto('article', $values)->execute(); // 較短的版本
$set = array('published_at' => new FluentLiteral('NOW()'));$query = $fluent->update('article')->set($set)->where('id', 1 )->execute();$query = $fluid->update('article', $set, 1)->execute(); // 如果透過主鍵更新一行則較短的版本
$query = $fluid->deleteFrom('article')->where('id', 1)->execute();$query = $fluent->deleteFrom('article', 1)->execute(); // 如果透過主鍵刪除一行則較短的版本
注意:INSERT、UPDATE 和 DELETE 查詢僅在呼叫->execute()
之後執行
在 Apache 2.0 或 GPL 2.0 許可下免費用於商業和非商業用途。