MixPHP 獨特的SQL構建方式

2021-08-10 04:01:48 字數 1229 閱讀 1891

mixphp 對cud這些寫操作都有專用方法,可快速構建,使用方法也與 yii2 完全一至,而r操作完全不一樣,mixphp 發明了一種新奇的構造方式,非常簡單的方式,在定義複雜查詢時,可使 sql 動態控制 where、join ,還具有良好的可讀性。

乙個比較常見的需求: 「多條件動態篩選網頁或api」

['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 引數為 false 時,該段 sql 會忽略。

- params 內的引數,自動 pdo 繫結引數至當前 sql 內。

- id, name 兩個引數都沒有時,會顯示 post 全部的資料。

- name 引數存在時,因為 name 在另乙個表,會自動 join。

- sql 內還包含分頁、排序。

通常實現乙個這樣的需求:

1. 在**內使用 string 拼接 where。

2. 使用查詢構造器。

由於動態判斷需很多 if ,會導致**流程很長,可讀性降低,如果還要手動做 pdo 引數繫結的話,**就更混亂了。

mixphp 這一構建方式,可支援及其複雜的sql,且可讀性良好,你是否要試試?

mixphp:

高效能 • 極簡 • 多功能,

內建 server 基於 swoole 的次世代 php 框架 。

靈活構建和拼接Laravel的SQL語句

在實際應用中,我們可能會遇到很多查詢條件互相制約的情況,例如,搜尋某某學校,某某班裡姓李的同學。我們例如學校的變數叫做 school,班級叫做 class,學生姓名叫做 name,那麼,我們的拼接語句這樣寫 php view plain copy print?str school str class...

mybatis之SQL語句構建器的使用

sql語句構建器是mybatis提供的一種構建sql語句的方式,因為在編寫比較複雜的slq語句時,如果使用字元拼接的方式很容易一不留神就編寫錯誤,比如差個逗號,查個引號之類的錯誤屢見不鮮,而sql語句構建器的存在就是為了我們在編寫sql語句的時候,進行分開編寫,把錯綜複查的sql語句簡化分來。使用s...

buildroot 構建自己的第三方packet包

buildroot官方全英文使用手冊的鏈結是需要知道每乙個細節的朋友,可以仔細查閱,這篇文章只是我自己從中提煉出來的一下快速上手的技巧。bool是變數的型別,即只要true 編譯選中,false 編譯未選中 兩種情況,和kconfig的規則是一樣的,後面的字串和help都是在make menucon...