field方法的用法總結,或許還有你不知道的

2022-04-06 15:32:57 字數 2212 閱讀 4425

thinkphp的連貫操作方法中field方法有很多的使用技巧,field方法主要目的是標識要返回或者操作的字段,下面詳細道來。

在查詢操作中field方法是使用最頻繁的。 $model->field('id,title,content')->select();

複製**

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

複製**

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

上面的例子也可以使用陣列代替:[-more-] $model->field(array('id','title','content'))->select();

複製**

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

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

陣列方式的定義可以為某些字段定義別名,例如: $model->field(array('id','title'=>'name','content'))->select();

複製**

執行的sql相當於: selectid,titleasname,contentfromtable

複製**

如果你希望直接使用: $model->field('id,titleasname,content')->select();

複製**

可能會得到錯誤的結果。

對於一些更複雜的字段要求,陣列的優勢則更加明顯,例如: $model->field(array('id','concat(name,'-',id)'=>'truename','left(title,7)'=>'sub_title'))->select();

複製**

執行的sql相當於: selectid,concat(name,'-',id)astruename,left(title,7)assub_titlefromtable

複製**

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

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

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

複製**

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

複製**

但是這並不是我說的獲取所有字段,我希望顯式的呼叫所有字段(對於對效能要求比較高的系統,這個要求並不過分,起碼是乙個比較好的習慣),那麼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欄位,無論使用者通過什麼手段更改或者新增了瀏覽器的提交字段,都會直接遮蔽。因為,其他是所有字段我們都不希望由使用者提交來決定,你可以通過自動完成功能定義額外的字段寫入。

研發團隊交付能力弱?或許你還缺少痛點挖掘的方法

01 為什麼要挖掘痛點 軟體研發活動,涉及研發流程 規範 團隊協作 專業技能要求等多方面的組成因素,各方面也需要持續改進才能匹配軟體這樣需求變化快和技能變化快這樣的現狀要求。而縱觀各方面持續改進的手段,一般都是在原有基礎上做加法操作,大動骨架的操作比較少,也不好實施。這種改進方式,隨之帶來的,就是流...

of的用法總結

文章 版權歸原作者!詞的用法分析原則一般是 詞不離句 即在具體語境中分析其用法。你沒有提供語境,那就全面的學習一下of的用法吧。of v v v f prep.屬於 的 the king of england英格蘭國王 含有 的,裝有 的 a book of pictures一本畫冊 a glass...

mysql還原資料的方法 MySQL 資料還原

1.1還原使用mysqldump命令備份的資料庫的語法如下 mysql u root p dbname backup.sq 示例 mysql u root p c backup.sql 1.2還原直接複製目錄的備份 通過這種方式還原時,必須保證兩個mysql資料庫的版本號是相同的。myisam型別的...