国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

CakePHP框架Model關(guān)聯(lián)對(duì)象用法分析

2024-05-04 23:59:12
字體:
供稿:網(wǎng)友

本文實(shí)例講述了CakePHP框架Model關(guān)聯(lián)對(duì)象。分享給大家供大家參考,具體如下:

CakePHP 提供關(guān)聯(lián)數(shù)據(jù)表間的映射,共有4種類型的關(guān)聯(lián):

hasOne,hasMany,belongTo,hasAndBelongsToMany.

設(shè)定了Model間的關(guān)聯(lián)關(guān)系定義,CakePHP就會(huì)將基于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)映射為基于對(duì)象的關(guān)系模型。

但是你應(yīng)該確保遵循CakePHP的命名規(guī)則.

命名規(guī)則中需要考慮的3個(gè)內(nèi)容是,外鍵,model名字,表名.

外鍵:單數(shù)形式的 modelName_id
表名:復(fù)數(shù)形式的 model名
Model名:駝峰法命名單數(shù)形式(見文件inflector.php).

hasOne 關(guān)聯(lián)的定義與查詢:通過在model中增加一個(gè)array來實(shí)現(xiàn).

class User extends AppModel{  var $name = 'User';  var $hasOne = array(    'UserInfos' => array(      'className' => 'UserInfos',      'conditions' => '',      'order'=> '',      'dependent' => true,      'foreignKey' => 'user_id'    )  );}

$hasOne 變量是一個(gè)array,CakePHP 通過該變量來構(gòu)建 Blog 與 User 之間的關(guān)聯(lián)。

className: 關(guān)聯(lián)對(duì)象的類名。
conditions: 關(guān)聯(lián)對(duì)象的選擇條件。
order: 關(guān)聯(lián)對(duì)象的排列方式。
dependent: 這是個(gè)布爾值,如果為 true,父對(duì)象刪除時(shí)會(huì)級(jí)聯(lián)刪除關(guān)聯(lián)子對(duì)象。
foreignKey: 指向關(guān)聯(lián) Model 的外鍵字段名,僅在不遵循 Cake 的命名約定時(shí)需要設(shè)置。

belongsTo 關(guān)聯(lián)的定義與使用

class Blog extends AppModel{  var $name = 'Blog';  var $belongsTo = array(    'User' => array(      'className' => 'User',      'conditions' => '',      'order' => '',      'foreignKey' => 'user_id'    )  );}

className: 關(guān)聯(lián)對(duì)象的類名。
conditions: SQL 條件子句以限定關(guān)聯(lián)的對(duì)象。
order: 關(guān)聯(lián)對(duì)象的排序子句。
foreignKey: 關(guān)聯(lián)對(duì)象所對(duì)應(yīng)的外鍵字段名。

hasMany 關(guān)聯(lián)的定義與查詢

class User extends AppModel{  var $name = 'User';  var $hasMany = array(    'Blog' => array(      'className' => 'Blog',      'conditions' => 'Blog.status = 1',      'order' => 'Blog.created DESC',      'limit' => '5',      'foreignKey' => 'user_id',      'dependent' => true,      'exclusive' => false, 'finderQuery' => ''    )  );}

$hasMany array 用來定義 User 包含多條 Blog 這樣的關(guān)聯(lián)關(guān)系。

className: 關(guān)聯(lián)對(duì)象類名。
conditions: 關(guān)聯(lián)對(duì)象限定條件。
order: 關(guān)聯(lián)對(duì)象排列子句。

limit: 用 limit 來限定檢索的關(guān)聯(lián)對(duì)象數(shù)量。

foreignKey: 外鍵字段名。
dependent: 是否級(jí)聯(lián)刪除。
exclusive: 如果為 TRUE,所有的關(guān)聯(lián)對(duì)象將在一句 SQL 中刪除,model 的 beforeDelete 回調(diào)函數(shù)不會(huì)被執(zhí)行。
finderQuery: 定義一句完整的 SQL 語句來檢索關(guān)聯(lián)對(duì)象,能夠?qū)﹃P(guān)聯(lián)規(guī)則進(jìn)行最大程度上的控制。

同樣可以為 Blog 加上關(guān)聯(lián) User 對(duì)象的 belongTo 關(guān)聯(lián)。

hasAndBelongsToMany 關(guān)聯(lián)的定義與查詢。

class Blog extends AppModel{  var $name = 'Blog';  var $hasAndBelongsToMany = array('Tag' =>    array('className'  => 'Tag',       'joinTable'  => 'blogs_tags',       'foreignKey'  => 'blog_id',       'associationForeignKey'=> 'tag_id',       'conditions'  => '',       'order'    => '',       'limit'    => '',       'uniq'     => true,       'finderQuery' => '',       'deleteQuery' => '',    )    );}

$hasAndBelongsToMany array 是定義 HABTM 關(guān)聯(lián)的變量。

className: 關(guān)聯(lián)對(duì)象類名。
joinTable: 如果沒有遵循 Cake 的命名約定建立關(guān)聯(lián)表,則需要設(shè)置該 key 來指定關(guān)聯(lián)表。
foreignKey: 定義本 mode 在關(guān)聯(lián)表中的外鍵字段。
associationForeignKey: 關(guān)聯(lián)表中指向關(guān)聯(lián)對(duì)象的外鍵字段名。
conditions:  關(guān)聯(lián)對(duì)象限定條件。
order: 關(guān)聯(lián)對(duì)象排序子句。
limit: 關(guān)聯(lián)對(duì)象數(shù)量限制。
uniq: 設(shè)為 true 的話,重復(fù)的關(guān)聯(lián)對(duì)象將被過濾掉。
finderQuery: 完整的關(guān)聯(lián)對(duì)象檢索語句。
deleteQuery: 完整的刪除關(guān)聯(lián)關(guān)系的SQL 語句。

保存關(guān)聯(lián)對(duì)象:

當(dāng)關(guān)聯(lián)的兩個(gè)對(duì)象都沒有持久化,你需要首先持久化主對(duì)象。

在保存子對(duì)象時(shí)要把父對(duì)象的 ID 保持在子對(duì)象中。

保存 hasAndBelongsToMany 關(guān)聯(lián)對(duì)象:

使用 bindModel()unbindModel() 實(shí)時(shí)地改變關(guān)聯(lián)關(guān)系:

 

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 宕昌县| 涡阳县| 余庆县| 尼玛县| 布尔津县| 汝阳县| 永靖县| 正定县| 常宁市| 广东省| 伊通| 呼伦贝尔市| 深州市| 玉山县| 台湾省| 葫芦岛市| 湖北省| 滕州市| 乃东县| 寿宁县| 昌黎县| 剑川县| 太白县| 略阳县| 巴塘县| 芦山县| 宾阳县| 合肥市| 北辰区| 得荣县| 白银市| 定结县| 上高县| 金塔县| 托克托县| 茶陵县| 浦城县| 百色市| 进贤县| 新乐市| 兴国县|