ThinkPHP CURD方法盤點 field方法

2022-04-29 07:09:07 字數 2195 閱讀 2283

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 as name,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) as truename,left(title,7) as sub_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();

$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欄位,無論使用者通過什麼手段更改或者新增了瀏覽器的提交字段,都會直接遮蔽。因為,其他是所有字段我們都不希望由使用者提交來決定,你可以通過自動完成功能定義額外的字段寫入。

via:

ThinkPHP CURD方法盤點 order方法

order方法屬於模型的連貫操作方法之一,用於對操作的結果排序。model where status 1 order id desc limit 5 select 注意 連貫操作方法沒有順序,可以在select方法呼叫之前隨便改變呼叫順序。支援對多個欄位的排序,例如 model where stat...

ThinkPHP CURD方法盤點 page方法

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

ThinkPHP CURD方法盤點 order方法

order方法屬於模型的連貫操作方法之一,用於對操作的結果排序。model where status 1 order id desc limit 5 select 注意 連貫操作方法沒有順序,可以在select方法呼叫之前隨便改變呼叫順序。支援對多個欄位的排序,例如 model where stat...