ThinkPHP5小結


1,框架目錄介紹

Application:用於存放網站的文件夾

Public:存放網站的靜態資源文件夾和各公共文件

Thinkphp:框架的核心代碼文件

Vendor:框架依賴的功能包存放文件夾

2,命令的方式創建控制器

根目錄:Php think make:controller 分組/控制器名稱

3,命令方式創建分組

根目錄:php think build

4,注冊路由

Route::rule(名稱,路由,方式GET/POST)

Route::get(名稱,路由)

Route::post(名稱,路由)

Route::any(名稱,路由,[‘method’=>’get|post’])

5,視圖的調用

$this->fetch()

1,數據庫的配置

(配置文件的地址:application/database.php)

2,命令的方式創建模型:

根目錄:Php think make:model 分組/模型名稱

3,數據的基本操作

1)添加:

添加一條記錄:save

添加多條記錄:saveAll

只添加數據庫中含有的字段:allowFiled(true)

如:$goods->allowField(true)->save($data)

$goods->saveall($data)

2)查詢:

A)查詢一條記錄:get()/find()

如:

Goods::get(133)

$goods->where(條件)

->find()

B)查詢多條記錄:all()/select()

如:

Goods::all([133,224])

$goods -> where('goods_id','in',[133,224])

->select()

C) 查詢字段:value()/column()

如:

查詢一個字段:

Goods::where('goods_id',133)

->value('goods_name')

查詢滿足條件的全部數據的指定字段:

Goods::where('goods_id','>',100)

->column('goods_name','goods_number')

3)修改:

update(至少滿足下面條件中的一個)

①設置一個where()方法

②給修改的數據里邊有設置主鍵id值

如:

$goods -> where('goods_name',’like’, ‘xiao%’)

-> update(['goods_name' => 'thinkphp']);

4)除:

a) 物理刪除:delete()/destroy(主鍵id)

b) 邏輯刪除:softDelete:只是更新了delete_time的值

  1. Trait:trait其實是解決php面向對象不能多繼承問題的,是一個彌補

4,連貫操作

1)where的四種使用方式:

① 數組  

  where(['name'=>'think','status'=>'1'])

   where  name=think and status=1

② 表達式

  where('id','>',1)

  where('mail','like','%think@163.com')

where(['id'=>['>',1],'mail'=>['like','%think@163.com']])

   where  id>1 and mail like ‘%think@163.com’

③ 字符串

  where('type=1 AND status=1')

④ 綁定參數

  where('id>:id AND name LIKE :name ',

  ['id'=>0, 'name'=>'thinkphp%'])

whereOr()或條件查詢

where('字段名','表達式','查詢條件');

whereOr('字段名','表達式','查詢條件');

例子:

$goods = new Goods();

$info = $goods -> where(‘goods_id’,’>’,100)

-> whereOr(‘goods_id’,’<’,50)

-> select();

2) field()限制被查詢的字段

field('id,title,content')   普通字段

field(['id','title','content']) 數組方式

field('id,SUM(score)') 使用函數

例子:

Goods::field(‘goods_id,goods_name’)->select()

3) limit()限制條數

limit(3)

limit('3,10') //通過偏移量進行條數限制,第4到14條

limit(3,10)

Goods::field(‘goods_id’)->limit(3,5)->select()

4) order()排序

order('id desc')

order('id asc')

order('id desc,status')

Goods::order(‘id desc,status’)->select()

5) group()分組查詢

Goods::field('goods_id,max(price)')

     -> group('goods_brand')

     -> select();

6) having()查詢

Goods::field('goods_id,count(goods_id) cnt')

    ->group('goods_brand')

    ->having('cnt>200')

    ->select();

7) fetchSql(true/false) 直接獲取sql語句不執行操作

true:獲取sql語句

false:執行sql語句

curd(增、刪、改、查)操作語句都可以獲取對應的sql語句

Goods::field('mg_name,mg_pwd')->fetchSql(true)->select()

$m->fetchSql(true)->update(['mg_id'=>508,'mg_name'=>'think']);

Manager::fetchSql(true)->destroy(509);

$manager->fetchSql(true)->saveAll($data);

$manager->fetchSql(true)->save($data);

8) alias()給數據表起別名,有兩種方式使用

① alias('m') 給當前數據表起別名

② alias(['sp_role  __ROLE__'=>'r','__MANAGER__'=>'m']);

表名要設置為大寫的,並且前后有兩個”_下划線”

__ROLE__會關聯sp_role表,假定sp_是表前綴

__MANAGER__會關聯sp_manager表

又比如__USER_TYPE__會關聯sp_user_type表

Manager::alias('m')

->join('__ROLE__ r','m.role_id=r.role_id')

->field('m.mg_name,r.role_name')

->select();

Manager::alias(['__ROLE__'=>'r','__MANAGER__'=>'m'])

->join('__ROLE__','m.role_id=r.role_id')

->field('m.mg_name,r.role_name')

->select();

9) join() 連表查詢

join(表名 別名,連表條件,類型)

類型:INNER,LEFT,RIGHT,FULL(mysql不支持)

select g.*,b.brand_name

from sp_goods as g

join sp_brand as b

on g.brand_id=b.brand_id

1,模板的使用

1)給模板傳遞數據:

1)方式

$this -> assign(變量在模版中的使用名稱,被傳遞的數據);(和smartymuban的應用相似)

2)方式

return $this -> fetch(‘模版名稱’,數組信息);

return $this -> fetch(‘模版名稱’,[‘info’=>$info,’name’=>’jim’]);

如果模版名稱為空,需要有“占位符”,具體如下

return $this -> fetch(‘’,[‘info’=>$info,’name’=>’jim’]);

3)方式

$info = xxx;

$name = yyy;

return $this -> fetch(‘’,compact(‘info’,’name’));

compact使用()

建立一個數組,包括變量名和它們的值

$city = “北京”;

$people = “2000萬”;

$weather = “sunshine”;

$arr = compact(‘city’,’people’,’weather’);

print_r($arr);

//[‘city’=>’北京’,’people’=>’2000萬’,’weather’=>’sunshine’]

2)數據的輸出

1)普通變量:{$name}

2)數組:{$arr.name} {$arr[‘name’]}

3)對象:{$obj.name}  {$obj:name}  {$obj->name}

2,遍歷數據

① {foreach $info as $val}

② {volist name="info" id="val"}

volist標簽里邊還可以支持的屬性:

offset :偏移量,從第n條開始顯示(條數基數從0開始),需要通過””雙引號定義信息

length: 一共顯示多少條

key:顯示數據序號

empty:數據為空時的提示信息

mod:取模,當前記錄的序號對mod取模后的信息,需要通過””雙引號定義信息

3,收集數據

request()->param():收集所有類型的數據

request()->post():收集post方式提交的信息

Svae():添加數據

allowField(true):去除數據庫不存在的數據

4,ajax無刷新方式

evt.preventDefault():阻止當前對象的默認動作

$(this).serialize():序列化當前表單的對象

parent.window.location.href=parent.window.location.href:刷新父界面

layer_close():關閉layer彈窗

5,制作超鏈接

{:url('分組/控制器/操作方法',[參數=>值,參數=>值])}

6,Request對象的使用

1,創建對象

request()

Request::instance()

function 方法(Request $request)

$this->request

2,收集數據

request()->get()

request()->post()

request()->param()

3,判斷請求類型

request()->isAjax()

request()->isGet()

request()->isPost()

4,獲得系統升級

request()->session

request()->action()

request()->controller()

request()->module() 

1,依賴注入

class Goods extends Model

{

//在模型中聲明invoke方法及對應內容

    public static function invoke(Request $request)

    {

      $id = $request->param('goods_id');

      return self::get($id);

    }

}

控制器方法中,設置上述模型的對象,就會自動綁定上數據模型

public function upd(Goods $goods)

2,命名空間

命名空間的作用范圍:

① 一個文件中只有一個namespace,這個空間的作用范圍就是從namespace開始到文件的結束

② 一個文件中有多個namespace,每個空間的作用范圍是從自己的namespace開始下遇到下個namespace到來之前

③ 文件彼此包含include,被包含文件的命名空間 對 包含文件不造成任何 命名空間作用范圍的影響

空間元素的三種訪問方式

① 完全限定名稱

② 限定名稱

③ 非限定名稱

空間引入

use 空間\空間\空間\空間;

use  空間\空間\空間\類名;

use  空間\空間\空間\元素  as  別名;

訪問公共空間的元素統一設置為:  \元素

建議:訪問公共空間元素都要通過”\元素”的方式進行,好處代碼可讀性高

注意:

文件的第1個namespace關鍵字前邊不能有任何非注釋代碼

ü 通過“非限定名稱”方式訪問一個函數或常量元素首先會在本身空間獲得,如果沒有再去公共空間獲取

ü 通過“非限定名稱”訪問訪問一個類元素  則本身空間必須存在該類,否則報錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM