文章出處

HAS_MANY 關聯表示當前模型擁有多個子對象

user數據表中的用戶可以發布多條留言,創建了think_content數據表,

其中uid用來關聯user中的id

在 WeiBo/Home/Controller/UserController.class.php 中代碼為:

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 use Home\Model\UserModel;
 5 
 6 class UserController extends Controller {
 7     public function index() {        
 8         $user = D('User');
 9         $arr = $user->relation(true)->select();
10         print_r($arr);
11     }
12  }

在 WeiBo/Home/User/Model/UserModel.class.php 中的代碼如下:

 1 <?php
 2 namespace Home\Model;
 3 use Think\Model;
 4 use Think\Model\RelationModel;
 5 
 6 class UserModel extends RelationModel {
 7     protected $_link = array(
 8        'Content'=>array(
 9             'mapping_type'=>self::HAS_MANY,
10             'mapping_name'=>'contents',
11             'class_name'=>'content',
12             'foreign_key' =>'uid',
13             'mapping_fields'=>'content',
14             'mapping_limit'=>'0,2',
15             'mapping_order'=>'id DESC',
16             ),
17     );    
18 }

得到的數據為:

后面還有數據未全部顯示。

 

用戶表和留言表:BELONGS_TO(多對一)表示 N 條留言從屬于某個用戶。

新建數據表think_role,用來表示user表中用戶的權限:

新建think_group用來連接user和role表,uid用來指代user中的id對應的用戶,gid用來指代role表中的權限:

在 WeiBo/Home/Controller/UserController.class.php 中代碼為:

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 use Home\Model\UserModel;
 5 
 6 class UserController extends Controller {
 7     public function index() {        
 8         $user = D('User');
 9         $arr = $user->relation(true)->select();
10         print_r($arr);
11     }
12  }

在 WeiBo/Home/User/Model/UserModel.class.php 中代碼為:

 1 <?php
 2 namespace Home\Model;
 3 use Think\Model;
 4 use Think\Model\RelationModel;
 5 
 6 class UserModel extends RelationModel {
 7     protected $_link = array(
 8        'Role'=>array(
 9             'mapping_type'=>self::MANY_TO_MANY,
10             'relation_table'=>'think_group',
11             'foreign_key' =>'uid',
12              'relation_foreign_key'=>'gid',
13          ),
14     );    
15 }

這時得到的數據為:

 

即兩個數據表關聯起來了,后面還有三組數據沒列出來。

 

關聯也可以向其它數據表的數據進行增刪改查,我們使用user和card兩個表

user表:

card表

 WeiBo/Home/User/Model/UserModel.class.php 中代碼進行關聯:

 1 namespace Home\Model;
 2 use Think\Model;
 3 use Think\Model\RelationModel;
 4 
 5 class UserModel extends RelationModel {
 6     protected $_link = array(
 7        'Card'=>array(
 8             'mapping_type'=>self::HAS_ONE,
 9             'foreign_key' =>'uid',
10                 'mapping_fields'=>'code',
11                 ),
12     );    
13 }

 WeiBo/Home/Controller/UserController.class.php 中的代碼進行增刪改查操作:

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 use Home\Model\UserModel;
 5 
 6 class UserController extends Controller {
 7     public function index() {        
 8         $user = D('User');
 9         $arr = $user->relation(true)->select();
10         print_r($arr);
11     }
12   public function add() {
13         $user=D('User');
14         $data['user']='測試用戶';
15         $data['email']='test@163.com';
16         $data['Card']=array(
17             'code'=>'3209xx',
18             );
19         $user->relation(true)->add($data);
20     }
21     public function delete() {
22         $user=D('User');
23         $user->relation(true)->delete(16);
24     }
25     public function update() {
26         $user=D('User');
27         $data['user']='測試用戶54';
28         $data['email']='test@163.com';
29         $data['Card']=array(
30             'code'=>'3909zz',
31             );
32         $user->relation(true)->where(array('id'=>20))->save($data);
33     }
34  }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()