CURD方法盤點 field方法

2021-06-16 20:43:53 字數 3334 閱讀 7131

thinkphp的curd操作中有很多非常實用的方法,從這篇開始,我們會為大家一一介紹。

首先為大家介紹下field方法的用法。field屬於模型的連貫操作方法之一,主要目的是標識要返回或者操作的字段,可以用於查詢和寫入操作。

在查詢操作中field方法是使用最頻繁的。$model

->

field

('id,title,content'

)->

select

();複製**

這裡使用field方法指定了查詢的結果集中包含id,title,content三個欄位的值。執行的sql相當於:select id

,title

,content from table

複製**

當然,除了select方法之外,所有的查詢方法,包括find等都可以使用field方法,這裡只是以select為例說明。

上面的例子也可以使用陣列代替:$model

->

field

(array

('id'

,'title'

,'content'

))->

select

();複製**

最終執行的sql和上面等效。

^_^似乎看起來陣列的用法過於複雜,不過先別下這個結論,後面就會明白陣列用法的好處了。

陣列方式的定義可以為某些字段定義別名,例如:$model

->

field

(array

('id'

,'title'

=>

'name'

,'content'

))->

select

();複製**

執行的sql相當於:select id

,title 

asname

,content from table

複製**

如果你希望直接使用:$model

->

field

('id,title as name,content'

)->

select

();複製**

可能會得到錯誤的結果。

對於一些更複雜的字段要求,陣列的優勢則更加明顯,例如:$model

->

field

(array

('id'

,'concat(name,'

-',id)'

=>

'truename'

,'left(title,7)'

=>

'sub_title'

))->

select

();複製**

執行的sql相當於:select id

,concat

(name

,'-',id

)astruename

,left

(title,7

)assub_title from table

複製**

想必大家都明白了,對於需要在field中使用sql函式的情況,陣列方式可以很好的解決。

是不是field方法就這麼點作用了呢?如果你這麼認為,那就太低估thinkphp的field方法了,thinkphp考慮的細節遠比你想象的要周到^_^。

先看下面的情況,如果有乙個表有非常多的字段,而且有兩個需求,首先要求需要獲取所有的字段,這個也許很簡單,因為不呼叫field方法或者直接使用空的field方法都能做到,事實上,的確如此:$model

->

select

();$model

->

field

()->

select

();$model

->

field

('*'

)->

select

();複製**

上面三個用法是等效的,都相當於執行sql:select 

*from table

複製**

但是這並不是我說的獲取所有字段,我希望顯式的呼叫所有字段(對於對效能要求比較高的系統,這個要求並不過分,起碼是乙個比較好的習慣),那麼ok,仍然很簡單,下面的用法可以完成預期的作用:$model

->

field

(true

)->

select

();複製**

fied(true)的用法會顯式的獲取資料表的所有字段列表,哪怕你的資料表有100個字段。

第二個需求是我希望獲取排除content欄位(文字欄位的值非常耗記憶體)之外的所有字段值,我們就可以使用field方法的排除功能,例如下面的方式就可以實現所說的功能:$model

->

field

('content'

,true

)->

select

();複製**

要排除更多的字段也可以:$model

->

field

('user_id,content'

,true

)->

select

();//或者用

$model

->

field

(array

('user_id'

,'content'

),true

)->

select

();複製**

除了查詢操作之外,field方法還有乙個非常重要的安全功能--欄位合法性檢測(注意:該功能3.1版本開始才能支援)。field方法結合create方法使用就可以完成表單提交的字段合法性檢測,如果我們在表單提交的處理方法中使用了:$model

->

field

('title,email,content'

)->

create

();

複製**

即表示表單中的合法字段只有title,email和content欄位,無論使用者通過什麼手段更改或者新增了瀏覽器的提交字段,都會直接遮蔽。因為,其他是所有字段我們都不希望由使用者提交來決定,你可以通過自動完成功能定義額外的字段寫入。

CURD方法盤點 field方法

thinkphp的curd操作中有很多非常實用的方法,從這篇開始,我們會為大家一一介紹。首先為大家介紹下field方法的用法。field屬於模型的連貫操作方法之一,主要目的是標識要返回或者操作的字段,可以用於查詢和寫入操作。在查詢操作中field方法是使用最頻繁的。model field id,ti...

CURD方法盤點 page方法

page方法也是模型的連貫操作方法之一,是完全為分頁查詢而誕生的乙個人性化操作方法。我們在前面已經了解了關於limit方法用於分頁查詢的情況,而page方法則是更人性化的進行分頁查詢的方法,例如還是以文章列表分頁為例來說,如果使用limit方法,我們要查詢第一頁和第二頁 假設我們每頁輸出10條資料 ...

倉儲管理之盤點 盤點方法

盤點方法主要分以下兩類 1 賬面盤點法 永續盤點法 帳面盤點法是將每一種商品分別設立 存貨帳卡 然後將每一種商品的出入庫數量及有關資訊記錄在賬面上,逐筆彙總出賬面庫存結餘量。2 盤現貨盤點 法 現貨盤點法是對庫存商品進行實物盤點方法。按盤點時間頻率的不同,現貨盤點又分為期末盤點和迴圈盤點。a.期末盤...