推荐算法 php SQL,MixPHP 独特的SQL构建方式
獨特的SQL構(gòu)建方式
MixPHP 對CUD這些寫操作都有專用方法,可快速構(gòu)建,使用方法也與 Yii2 完全一至,而R操作完全不一樣,MixPHP 發(fā)明了一種新奇的構(gòu)造方式,非常簡單的方式,在定義復(fù)雜查詢時,可使 SQL 動態(tài)控制 WHERE、JOIN ,還具有良好的可讀性。
一個SQL構(gòu)建的例子:
一個比較常見的需求: “多條件動態(tài)篩選網(wǎng)頁或API”
$rows = \Mix::app()->rdb->createCommand([
['SELECT *'],
['FROM `post`'],
[
'INNER JOIN `user` ON `user`.id = `post`.id',
'if' => !is_null($this->name),
],
['WHERE 1 = 1'],
[
'AND `post`.id = :id',
'params' => ['id' => $this->id],
'if' => !is_null($this->id),
],
[
'AND `user`.name = :name',
'params' => ['name' => $this->name],
'if' => !is_null($this->name),
],
['ORDER BY `post`.id ASC'],
['LIMIT :offset, :rows', 'params' => ['offset' => ($this->currentPage - 1) * $this->perPage, 'rows' => $this->perPage]],
])->queryAll();
詳細分解:
if 參數(shù)為 false 時,該段 SQL 會忽略。
params 內(nèi)的參數(shù),自動 pdo 綁定參數(shù)至當前 SQL 內(nèi)。
id, name 兩個參數(shù)都沒有時,會顯示 post 全部的數(shù)據(jù)。
name 參數(shù)存在時,因為 name 在另一個表,會自動 join。
SQL 內(nèi)還包含分頁、排序。
通常實現(xiàn)一個這樣的需求:
在代碼內(nèi)使用 string 拼接 where。
使用查詢構(gòu)造器。
由于動態(tài)判斷需很多 if ,會導(dǎo)致代碼流程很長,可讀性降低,如果還要手動做 pdo 參數(shù)綁定的話,代碼就更混亂了。
MixPHP 這一構(gòu)建方式,可支持及其復(fù)雜的SQL,且可讀性良好,你是否要試試?
MixPHP:https://github.com/mixstart/mixphp
高性能 ? 極簡 ? 多功能,
內(nèi)置 Server 基于 Swoole 的次世代 PHP 框架 。
總結(jié)
以上是生活随笔為你收集整理的推荐算法 php SQL,MixPHP 独特的SQL构建方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phppython混合开发_如何让pyt
- 下一篇: centos中mysql操作命令,Lin