码迷,mamicode.com
首页 > 其他好文 > 详细

关联[2]

时间:2015-07-01 20:09:09      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

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  }

 

关联[2]

标签:

原文地址:http://www.cnblogs.com/jacson/p/4613777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!