在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=innodbdefault charset=utf8 |think_department部門表
create table `think_department`(`id`int(11)not null auto_increment,`name`varchar(50)default null,primary key (`id`))engine=innodbdefault 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=innodbdefault 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=innodbdefault charset=utf8插入資料到部門表think_department
insert intothink_cars valuesthink_user資料(null,'gongxiang','工商卡','1'),(null,'jianshe','建行卡','2'),(null,'jiaohang','交通銀行卡',3);
insert intothink_archives valuesthink_cars資料(null,1,'北京','[email protected]','13888888'),(null,2,'上海','[email protected]','1377777'),(null,3,'重慶','[email protected]','1344444'),(null,4,'天津','[email protected]','1111111'),(null,5,'山西','[email protected]','1322222'),(null,6,'河北','[email protected]','1333333'),(null,7,'廣州','[email protected]','13232323'),(null,8,'廣東','[email protected]','121121212'),(null,9,'深證','[email protected]','1821212');
insert intothink_cars valuesthink_archives(null,'gongxiang','工商卡','1'),(null,'jianshe','建行卡','2'),(null,'jiaohang','交通銀行卡',3);queryok,3rows affected (0.01sec)
insert intothink_archives valuesok,資料和表建立完了,下面講如何用thinkphp的關聯模型去獲取表中資料(null,1,'北京','[email protected]','13888888'),(null,2,'上海','[email protected]','1377777'),(null,3,'重慶','[email protected]','1344444'),(null,4,'天津','[email protected]','1111111'),(null,5,'山西','[email protected]','1322222'),(null,6,'河北','[email protected]','1333333'),(null,7,'廣州','[email protected]','13232323'),(null,8,'廣東','[email protected]','121121212'),(null,9,'深證','[email protected]','1821212');
現在model資料夾裡建立usermodel.class.php
<?php先做部門和員工之間的關係.員工表的did和部門表的id對應classusermodelextend relationmodel{}
foreign_key 關聯表的外來鍵定義
condition 關聯條件
parent_key 自引用關聯字段
as_fields 字段別名定義
2.員工表和檔案表之間的關係
3.員工表與銀行卡表之間關係的定義
使用方法,在indexaction.class.php中
classindexactionextendsaction}
ThinkPHP關聯模型詳解
在thinkphp中,關聯模型更類似一種mysql中的外來鍵約束,但是外來鍵約束更加安全,缺點卻是在寫sql語句的時候不方便,thinkphp很好得解決了這個問題.但是很多人不動關聯模型的意思.現在就寫個例子.讓大家理解thinkphp關聯模型的意思.環境描述 公司有乙個員工表think user,...
thinkphp 模型關聯預載入和模型關聯統計
use think model class usermodel extends model public function getall public function getstatusattr value use think model class employeesmodel extends ...
關於thinkphp關聯模型的HAS ONE
距離第一次學習thinkphp有一年多了,也算是認識它和使用它一年多了吧,但是發現我對thinkphp還是有些不熟悉的地方,特別是模型。最近開發二手房專案,裡面用到模型,然後資料庫是沿用之前的,框架轉為thinkphp,之前一直自己設計資料庫,所以模型可以做的和官方一樣,但是這次因為資料庫不便於改動...