ThinkPHP3.2 之心得(一)

先說一下自己學習的經歷~

剛開始學的時候感覺是有點困難的,因為第一次接觸MVC框架。其實說簡單一點,就是每一個Controller(控制器)對應View(視圖層)下的一個相同名字的文件夾,然后自定義Controller里面的方法, 就對應View文件夾下的html文件。而Model的作用就是管理控制器里的邏輯部分,使操作更簡單化,還能放一些有用的函數方法。

再說說心得吧

1.查詢
  • 查詢的關鍵也就是一個單詞where 是查詢的條件。在 TP 中用得比較多的就是兩種方法,一種是字符串查詢,一種是數組查詢(對象用得少,沒必要)
    1.首先說一下字符串查詢
//假設我們有一個user表
$user = M('User');

//已知id = 3查詢一條記錄
$result = $user->where('id = 3')->find();   //注意查詢單條記錄一律用find,這樣返回的是一維數組。

//查詢 id為$id 的那條記錄
$result = $user->where("id = '$id'")->find();  //變量在里面打上單引號(防止它是字符串呢)

//查詢 id為一個數組 如$id = [1, 2, 3];
$id = join(',',$id);       //要將數組改成字符串模式
$result = $user->where("id in (".$id.")")->select();    //注意查詢多條記錄一律用select()

//查詢id 為一個數組 并且 status為 1呢 (多個字段查詢)
$result = $user->where("id in (".$id.") AND status = 1")->select(); //除了 "=" 以外的也與其類似
//統計查詢
$user->where("status = 1")->count(); //統計status = 1 的記錄個數

//找到對應$id字段,使其值加減(一般用于做瀏覽數等地方)
$user->where("id = $id")->setInc('view', 1); //使view這個字段的值 +1  加減"1" 可以默認不要第二個參數
$user->where("id = $id")->setDec('view', 1);//使view這個字段的值 -1
  1. 再來說一下,數組查詢
$user = M('User');
//數組查詢一般將對應的字段條件作為鍵 放到數組里 如:
$map['id'] = ['lt', 100];
$user->where($map)->select(); //查詢id 小于100的數據

//上面是單個數據  如果查詢多個字段呢?
$map['status'] = 1;
$map['name'] = ['like',['%javascript%']];
$user->where($map)->select(); //記住 這樣默認是 'and' 連接的  兩個條件都要滿足

//問題來了 ,  如果是or連接呢
$map['status'] = 1;
$map['name'] = ['like',['%javascript%']];
$map['_logic'] = 'or';
$user->where($map)->select(); //這樣就變成or了 兩個條件滿足其一即可

//跟著上面的來  說過$id = [1, 2, 3];
$map['id'] = ['in', $id];  /*或者是*/ $map['id'] = ['in',''.join(",",$id).'']; 

3.只要把where這個條件掌握好 其他的刪除,修改,增加 也是一樣的。
下面來一個很精妙的小例子。

表單模糊查詢
這個是一個模糊查詢,上面好像也有,我們這里就用數組數組方法吧。首先,看這張圖,這是一個表單form,
method為get,如果兩個都填,那么就是兩個條件AND 如果只填一個,那么就單獨查詢, 如果不填就查詢所有的。

public function index() {
    $name = I('get.name');
    $phone = I('get.phone');  //先用I方法獲取到傳過來的數據
//然后再進行判斷
    if($name && trim($name) != '') {
        $map['name'] = ['like', '%'.$name.'%'];  //數組方式的模糊查詢
    }    
    if($phone && trim($phone) != '') {
        $map['phone'] = ['like', '%'.$phone.'%'];    
    } 
    //這里假設還有一個條件  status = 1;
    $map['status'] = 1;
    $result = $user->where($map)->select();
}
  1. Thinkphp還有個地方經常犯錯的就是 在模版里寫<>(標簽)
    例如:
'比較標簽'
<select name="group_id" id="group">
                            <volist name="groups" id="group">
                                <option value="{{$group.id}}" <eq name="group.id"value="$customer.group_id">selected</eq> >
                                {{$group.name}}
                                </option>
                            </volist>
                        </select>
需要注意的是在這些內置的判斷標簽里  name="group.id" || name="group['id']" 
只有這兩種寫法  不需要 '$'  ,相反而在value里  
value = $customer.group_id || value = $customer['group_id'] 一定不要忘記'$'

'if標簽'  有點奇怪
<select name="category_id" id="parentCategory" class="form-control">
                                <volist name="categories" id="category">
                                    <option value="{{$category.id}}"
                                    <if condition="$category['id'] eq $article['category_id']">selected</if>
                                    >一級分類:{{$category.name}}</option>
                                    <volist name="category.children" id="child">
                                        <option value="{{$child.id}}"
                                        <if condition="$child['id'] eq $article['category_id']">selected</if>
                                        >      二級分類:{{$child.name}}</option>
                                    </volist>
                                </volist>
                            </select>

這個奇怪在  因為不是name里面所以需要'$'  應該 $X['xxx']和 $X.xxx可以替換 才對
 問題就處在最后一個又不能替換   。
經上面得出的結果  在比較標簽里  盡量全部用$X['xxx'] ,不要用$X.xxx了
還有注意 name="  ", 這個里面一定不要加 '$'

先寫這么多 以后再更新~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容