關聯模型 1

2022-04-13 12:33:49 字數 2808 閱讀 4255

一. 模型簡介

二. 關聯操作

使用者表和身份證表關聯,has_one(一對一),表示乙個使用者只有乙個身份證。

先建立兩個資料表:

weibo/home/controller/usercontroller.class.php 中插入**:

1

<?php23

namespace home\controller;

4use

think\controller;

5use

home\model\usermodel;67

class usercontroller extends

controller

13 }

然後在 weibo/home/user/model/usermodel.class.php 中插入**:

1

<?php

2namespace home\model;

3use

think\model;

4use

think\model\relationmodel;56

class usermodel extends

relationmodel

has_one 支援以下屬性

class_name 

關聯的模型類名,如果不寫,會自動定位相關資料表。

關聯對映名稱,用於獲取資料的陣列名。

設定關聯模式,比如一對一 self::has_one。

foreign_key 

關聯外來鍵的名稱,會自動對應當前資料表的 id。

關聯要查詢的字段,預設是查詢所有。

as_fields 

關聯的字段對映成同級的字段。

condition

關聯條件,額外查詢使用。

在 weibo/home/user/model/usermodel.class.php 中測試各行**的效果:

1

protected

$_link = array

(2 'card'=>array

(4 'class_name'=>'card',

6 ),

7 );

效果為:

'class_name'=>'card', 這行可以不寫,因為不寫的的時候缺省會自動定位相關資料表,

但寫了就不能寫錯了,必須和資料表的名字是一樣的。

是因為沒有設定關聯的外來鍵,加上 'foreign_key' =>'uid', 後,得到效果如圖:

這時就可以得到think_card和think_user的資料表關聯在一起了。

再加上 'as_fields'=>'code', 後,則將think_card中的code資料呈現形式和think_user中的資料呈現形式一樣:

加上 'condition'=>'id=1', 後,獲取 think_card 中只獲取 id=1 的資料,只是sql查詢的方式有些變化

沒加之前是:

加了之後:

這時讀取資料中只有id=1的資料中有code,其它的code的資料都是null,

下面是belongs_to關聯模型:

belongs_to 關聯表示當前模型從屬於另外乙個父物件,例如每個使用者都屬於乙個部門

新建 weibo/home/controller/cardcontroller.class.php ,**為:

1

<?php

2namespace home\controller;

3use

think\controller;45

class cardcontroller extends

controller

11 }

新建 weibo/home/user/model/cardmodel.class.php ,插入**:

1

<?php

2namespace home\model;

3use

think\model;

4use

think\model\relationmodel;56

class cardmodel extends

relationmodel

'foreign_key'=>'uid', 中關聯的uid是card表中的結構,而不是user表中的結構。card中的uid的資料為:1,2,4,則得到的結果是:

紅色標出的是需要注意的部分,如果這裡寫id,在card表中的資料為1,2,3則出現的結果為:

此時得到的資料是user裡面的第3個使用者的名字。

thinkphp 模型關聯預載入和模型關聯統計

use think model class usermodel extends model public function getall public function getstatusattr value use think model class employeesmodel extends ...

Django模型關聯

1對1,1對多,多對多 1對1 onetoonefield 主鍵和外來鍵是一對一的關係,在關聯表中,只能關聯乙個主表的id拓展表找主表。建立模型 class student models.model stu name models.charfield max length 10 stu models...

Django模型關聯

關係字段型別 關係型資料庫的關係包括三種型別 一對多關係 參見booktest應用中的bookinfo類和heroinfo類。定義圖書模型類bookinfo class bookinfo models.model btitle models.charfield max length 20 圖書名稱 ...