TP5多欄位排序

2022-08-17 14:51:17 字數 1050 閱讀 4309

有業務需求如下:

select * from table where id in (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);

這裡直入主題,用tp的order方法寫的話,可能不太好寫,但是也可以寫成這樣

->order("field(id,3,6,9,1,2,5,8,7)")

但是官方文件說了,當你的order排序中使用了sql函式的時候,請使用orderraw方法替代order 

所以並不太好實現。

所以查閱資料找到方法,資料

$exp = new \think\db\expression('field(id,3,6,9,1,2,5,8,7)');

$result = $query->where(['id'=>['in','3,6,9,1,2,5,8,7']])->order($exp)->select();

這裡我直接引用資料中的回答,如果使用模型查詢的話就是:

model::where("id","in","3,6,9,1,2,5,8,7")->order("field(id,3,6,9,1,2,5,8,7)")->select();

還可以用

orderraw("field(users.id, $ids)"),或者

order(db::raw("field(users.id, $ids)"))

標題說了,是多字段排序,ok,沒有問題,多欄位排序,你只需要在例項化expression類的時候寫上就行了

這裡只是大概寫一下,具體的請根據自己的業務需求進行更改,這裡我一共進行了四種不同字段不同需求的排序

$exp = new expression('field(table1.id,null),field(table2.id,null),convert(table3.field3 using gbk) asc,table4.id desc');

當然,熟悉的朋友可以直接在->orderrawz中寫原生的sql也是沒有問題的。

TP5 實現多字段的關鍵詞模糊查詢

我們要考慮到的是這幾個欄位like查詢的時候,他們的關係是或關係,最外層則是和關係。2.1 第一種實現方法 keyword input keyword user new usermodel where type 1 where function query use keyword select 其中...

TP5隱藏關聯屬性字段

環境thinkphp5 php7.0.10 我們通常會隱藏一些字段,應用於不同的介面 先將database的配置檔案更改,將資料集返回型別改為collection 下面我們的介面的查詢不管是find 還是select 都一樣處理 group group hidden name group是mode查...

Tp5 建表 金額 字段

示例 daichao product 表 型別 decimal 長度 6 小數點 2 比如 mysql欄位decimal 9,2 中9是定點精度,2是小數字數。存在這麼乙個公式 decimal a,b 其中a指定指定小數點左邊和右邊可以儲存的十進位制數字的最大個數,最大精度38 b指定小數點右邊可以...