#### 1. 創(chuàng)建數(shù)據(jù)表 --- **一對(duì)一反向關(guān)聯(lián)使用率很高** **附表關(guān)聯(lián)主表稱(chēng)為反向關(guān)聯(lián),又稱(chēng)為相對(duì)關(guān)聯(lián)(tp官方手冊(cè)這樣叫)** ![](https://img.itqaq.com/art/content/bed59a998b9ce0c805a49a46194879dd.png) ```sql -- 分類(lèi)表 CREATE TABLE `category` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `name` varchar(255) DEFAULT NULL COMMENT '分類(lèi)名稱(chēng)', `sort` int(11) DEFAULT NULL COMMENT '分類(lèi)排序', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; INSERT INTO `category` VALUES (1, 'Java', 0); INSERT INTO `category` VALUES (2, 'Vue', 0); -- 文章表 CREATE TABLE `article` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `category_id` int(11) DEFAULT '0', `title` varchar(255) DEFAULT NULL, `content` text, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; INSERT INTO `article` VALUES (1, 0, 'PHP數(shù)據(jù)類(lèi)型', '文章內(nèi)容01'); INSERT INTO `article` VALUES (2, 1, 'Java常量池', '文章內(nèi)容02'); INSERT INTO `article` VALUES (3, 2, 'Vue Cli 4 引入圖片地址', '文章內(nèi)容03'); ``` #### 2. 文章模型定義一對(duì)一相對(duì)關(guān)聯(lián)方法 --- ```php public function category() { /** * belongsTo('關(guān)聯(lián)模型', '當(dāng)前模型外鍵', '關(guān)聯(lián)模型主鍵'); * * 第一個(gè)參數(shù) * app\model\Category 關(guān)聯(lián)的模型類(lèi)名(分類(lèi)表模型) * * 第二個(gè)參數(shù) * category_id 外鍵字段,默認(rèn)的外鍵名規(guī)則是關(guān)聯(lián)模型名+_id(文章表外鍵字段) * * 第三個(gè)參數(shù) * id 關(guān)聯(lián)模型主鍵,默認(rèn)是關(guān)聯(lián)模型的 $pk 值(分類(lèi)表主鍵字段) */ return $this->belongsTo(Category::class, 'category_id', 'id'); } ``` ![](https://img.itqaq.com/art/content/8367b83c8a67881f2626317e0bc2e1a8.jpg) #### 3. belongsTo() 也支持額外的方法 `同 hasOne()` --- ```php public function category() { /** * belongsTo('關(guān)聯(lián)模型', '當(dāng)前模型外鍵', '關(guān)聯(lián)主鍵'); */ return $this->belongsTo(Category::class, 'category_id', 'id')->bind([ 'name', 'sort' ]); } ``` ![](https://img.itqaq.com/art/content/ffaafc922ca2c29849d4fe4ab9dca3bc.jpg)