首頁 >後端開發 >php教程 >CakePHP 2.x 升級3.0

CakePHP 2.x 升級3.0

WBOY
WBOY原創
2016-08-08 09:25:57948瀏覽

CakePHP 2.x => 3.x 升級手順

一、Controller層

  1.find('list')
    原2.x中該方法透過指定option中的'fields'來實現key=>value
    3.x透過與option」中的'fvalueFieldield值需要用toArray()進行轉換

  2.find('first')、find('count')
    3.x中已經完全廢棄掉這兩個參數,而使用find()->first()以及find()->count()進行替換

  3.find查詢關聯表時,必須新增'contain'屬性,Cake 3.x 預設不會將表格關聯在一起

  4.findById
    **?沒有找到相關文檔?**
    2.x中findById格式為($id,array $fields)〜 、〜 y) $fields)方法來篩選資料

  5.Component->initialize()

    2.x透過initialize(Controller $Controller)取得呼叫該Component的Controller
     3. ->_registry->getController();取得

  6.SessionComponent

    3.x廢棄掉了該Component而改用$this->request->session()替換

二、Model層

  1.Associations

    2.x透過定義屬性來實現關聯
    3.x需要在Table中的initialize方法中呼叫$this-belongs、$this-belongs>等方法來實現

  2.Validation

    2.x透過定義validate屬性實作資料驗證
    3.x需要在Table中定義validationDefault(Validator $validator)方法來實作
idationDefault(Validator $validator)方法來實作

idationDefault(Validator $validator)方法來實作

idationDefault(Validator $validator)方法來實作

  3.virtualFields
    3.x中廢棄了這個屬性,如需使用,需要在Entity中追加方法
    》 FullName()
    然後將full_name 加到$_accessible中

    使用時A->find 後該值只可透過object->property的方式獲取,無法透過數組方式取得


  4.field()
    **?沒有找到相關文件?**

    3.x可能廢棄了該方法可以用get()方法替換


  5.ClassRegistry::init()

    3.x廢棄此方法需要用TableRegistry::get()取代


  6.Mysql別名設定
    2.x只需要在fields屬性中加入as即可如'fields'=>array('id as table_id')

  外  3.如名別定義」如名如同定義'sx' =>['table_id'=>'id']

三、View層

  (View層,從2.x的View資料夾搬遷到3.x的Template)


  1.$this->Html->url

    3.x中用$this->Url->build取代

四、Bug


  1. Associations

    hasMany的表關聯查詢時,如果需要指定fields則必須在fields中加入關聯鍵? ? ?

此升級手順會持續更新中~~~~~~

以上就介紹了CakePHP 2.x 升級3.0,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn