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.期末盤...