中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP關聯模型詳解

發布時間:2020-07-15 23:50:38 來源:網絡 閱讀:4036 作者:AndyMac 欄目:web開發

        在ThinkPHP中,關聯模型更類似一種mysql中的外鍵約束,但是外鍵約束更加安全,缺點卻是在寫sql語句的時候不方便,ThinkPHP很好得解決了這個問題.但是很多人不動關聯模型的意思.現在就寫個例子.讓大家理解ThinkPHP關聯模型的意思.

        

        環境描述:公司有一個員工表think_user,一個檔案表,think_archives,一個部門表,think_department,和一個銀行卡表.think_cars.

        一個員工只有一個檔案表,所以關系就是HSA_ONE,

        一個員工只屬于一個部門,但是部門里有多個員工,所以是BELONGS_TO關系

        一個員工有多個銀行卡,但是一個銀行卡只能屬于一個員工.所以關系就是HAS_MANY.


        先創建需要的表和測試數據

       think_user表.

CREATE TABLE `think_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `did` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

        think_department

 CREATE TABLE `think_department` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

        think_archives

        

CREATE TABLE `think_archives` (
  `id` int(7) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `addr` varchar(200) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `tel` int(13) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |


think_cars

CREATE TABLE `think_cars` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `type` varchar(50) DEFAULT NULL,
  `uid` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


插入數據到部門表think_department

insert into think_cars values
     (null,'gongxiang','工商卡','1'),
     (null,'jianshe','建行卡','2'),
     (null,'jiaohang','交通銀行卡',3);

think_user數據

insert into think_archives values
     (null,1,'北京','123@163.com','13888888'),
    (null,2,'上海','111@qq.com','1377777'),
     (null,3,'重慶','222@qq.com','1344444'),
     (null,4,'天津','333@qq.com','1111111'),
    (null,5,'山西','444@qq.com','1322222'),
   (null,6,'河北','555@qq.com','1333333'),
     (null,7,'廣州','6666@qq.com','13232323'),
    (null,8,'廣東','7777@qq.com','121121212'),
     (null,9,'深證','888@qq.com','1821212');

think_cars數據

insert into think_cars values
     (null,'gongxiang','工商卡','1'),
    (null,'jianshe','建行卡','2'),
    (null,'jiaohang','交通銀行卡',3);
Query OK, 3 rows affected (0.01 sec)

think_archives

insert into think_archives values
     (null,1,'北京','123@163.com','13888888'),
     (null,2,'上海','111@qq.com','1377777'),
     (null,3,'重慶','222@qq.com','1344444'),
     (null,4,'天津','333@qq.com','1111111'),
   (null,5,'山西','444@qq.com','1322222'),
     (null,6,'河北','555@qq.com','1333333'),
     (null,7,'廣州','6666@qq.com','13232323'),
     (null,8,'廣東','7777@qq.com','121121212'),
    (null,9,'深證','888@qq.com','1821212');


ok,數據和表創建完了,下面講如何用ThinkPHP的關聯模型去獲取表中數據

現在Model文件夾里創建UserModel.class.php

<?php
class UserModel extend RelationModel{}


  1. 先做部門和員工之間的關系.員工表的did和部門表的id對應


class UserModel extends RelationModel{
	protected $_link=array(
			'Department'=>array(
					'mapping_type'=>BELONGS_TO,
					'class_name'=>'Department',
					'mapping_name'=>'Department',
					'foreign_key'=>'did',
				),
		);
}


mapping_type是要關聯的模型類名

mapping_name 關聯表的模型名稱

foreign_key   關聯表的外鍵定義

mapping_fields    關聯表要查詢的字段,默認為全部字段

condition   關聯條件

parent_key 自引用關聯字段

as_fields   字段別名定義


2.員工表和檔案表之間的關系

	protected $_link=array(
			'Archives'=>array(
					'mapping_type'=>HAS_ONE,
					'class_name'=>'Archives',
					'foreign_key'=>'id',
					'condition'=>'uid'
				),
		);


3.員工表與銀行卡表之間關系的定義

protected $_link=array(
			'Cars'=>array(
					'mapping_type'=>HAS_MANY,
					'class_name'=>'Cars',
					'foreign_key'=>'id',
					'condition'=>'uid',
				),
		);


使用方法,在IndexAction.class.php中

class IndexAction extends Action {
    public function index(){
    	$user=D('User');
    	$row=$user->relation(true)->select();
    	dump($row);
    }
}

ThinkPHP關聯模型詳解

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安康市| 高唐县| 美姑县| 白水县| 洛阳市| 桦川县| 门源| 炉霍县| 鞍山市| 肇州县| 嘉禾县| 大同县| 邹平县| 庆元县| 仲巴县| 盘锦市| 淄博市| 永城市| 青岛市| 绵阳市| 永福县| 临清市| 孙吴县| 滁州市| 托里县| 广安市| 长丰县| 阿拉善盟| 盘锦市| 姚安县| 融水| 休宁县| 保山市| 古交市| 崇礼县| 德江县| 鄂托克前旗| 正定县| 无棣县| 内黄县| 威远县|