TP6.0 一對(duì)一模型關(guān)聯(lián) belongsTo 相對(duì)關(guān)聯(lián)(反向關(guān)聯(lián))
1. 創(chuàng)建數(shù)據(jù)表
一對(duì)一反向關(guān)聯(lián)使用率很高
附表關(guān)聯(lián)主表稱為反向關(guān)聯(lián),又稱為相對(duì)關(guān)聯(lián)(tp官方手冊(cè)這樣叫)

-- 分類表
CREATE TABLE `category` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
`name` varchar(255) DEFAULT NULL COMMENT '分類名稱',
`sort` int(11) DEFAULT NULL COMMENT '分類排序',
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ù)類型', '文章內(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)方法
public function category()
{
/**
* belongsTo('關(guān)聯(lián)模型', '當(dāng)前模型外鍵', '關(guān)聯(lián)模型主鍵');
*
* 第一個(gè)參數(shù)
* app\model\Category 關(guān)聯(lián)的模型類名(分類表模型)
*
* 第二個(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 值(分類表主鍵字段)
*/
return $this->belongsTo(Category::class, 'category_id', 'id');
}

3. belongsTo() 也支持額外的方法 同 hasOne()
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'
]);
}


浙公網(wǎng)安備 33010602011771號(hào)