zoukankan      html  css  js  c++  java
  • 多关系的CActiveRecord使用举例

    相关的数据库代码

    1. # --------------------------------------------------------  
    2. # Host:                         10.0.2.2  
    3. # Server version:               5.1.58-1ubuntu1  
    4. # Server OS:                    debian-linux-gnu  
    5. # HeidiSQL version:             6.0.0.3603  
    6. Date/time:                    2011-11-30 19:33:04  
    7. # --------------------------------------------------------  
    8.   
    9. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;  
    10. /*!40101 SET NAMES utf8 */;  
    11. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;  
    12. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;  
    13.   
    14. # Dumping structure for table testdrive.tbl_profile  
    15. CREATE TABLE IF NOT EXISTS `tbl_profile` (  
    16.   `owner_id` int(11) NOT NULL DEFAULT '0',  
    17.   `nickname` varchar(50) DEFAULT NULL,  
    18.   `birthday` date DEFAULT NULL,  
    19.   `regdate` timestamp NULL DEFAULT NULL,  
    20.   PRIMARY KEY (`owner_id`)  
    21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;  
    22.   
    23. # Dumping data for table testdrive.tbl_profile: 0 rows  
    24. /*!40000 ALTER TABLE `tbl_profile` DISABLE KEYS */;  
    25. INSERT INTO `tbl_profile` (`owner_id`, `nickname`, `birthday`, `regdate`) VALUES  
    26.     (1, '1''0000-00-00''2011-11-30 14:32:01'),  
    27.     (2, '2''2011-11-21''2011-11-30 14:32:01'),  
    28.     (3, '3''0000-00-00''2011-11-30 14:32:01'),  
    29.     (4, '3''0000-00-00''2011-11-30 14:32:01');  
    30. /*!40000 ALTER TABLE `tbl_profile` ENABLE KEYS */;  
    31.   
    32.   
    33. # Dumping structure for table testdrive.tbl_user  
    34. CREATE TABLE IF NOT EXISTS `tbl_user` (  
    35.   `id` int(11) NOT NULL AUTO_INCREMENT,  
    36.   `username` varchar(128) CHARACTER SET latin1 NOT NULL,  
    37.   `password` varchar(128) CHARACTER SET latin1 NOT NULL,  
    38.   `email` varchar(128) CHARACTER SET latin1 DEFAULT NULL,  
    39.   PRIMARY KEY (`id`)  
    40. ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;  
    41.   
    42. # Dumping data for table testdrive.tbl_user: 4 rows  
    43. /*!40000 ALTER TABLE `tbl_user` DISABLE KEYS */;  
    44. INSERT INTO `tbl_user` (`id`, `username`, `password`, `email`) VALUES  
    45.     (1, '1''1''1'),  
    46.     (2, '2''3''3333456'),  
    47.     (3, '2''33''33334'),  
    48.     (4, 'admin''123456''admin@admin.com');  
    49. /*!40000 ALTER TABLE `tbl_user` ENABLE KEYS */;  
    50.   
    51.    
    # --------------------------------------------------------
    # Host:                         10.0.2.2
    # Server version:               5.1.58-1ubuntu1
    # Server OS:                    debian-linux-gnu
    # HeidiSQL version:             6.0.0.3603
    # Date/time:                    2011-11-30 19:33:04
    # --------------------------------------------------------
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET NAMES utf8 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    
    # Dumping structure for table testdrive.tbl_profile
    CREATE TABLE IF NOT EXISTS `tbl_profile` (
      `owner_id` int(11) NOT NULL DEFAULT '0',
      `nickname` varchar(50) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      `regdate` timestamp NULL DEFAULT NULL,
      PRIMARY KEY (`owner_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    # Dumping data for table testdrive.tbl_profile: 0 rows
    /*!40000 ALTER TABLE `tbl_profile` DISABLE KEYS */;
    INSERT INTO `tbl_profile` (`owner_id`, `nickname`, `birthday`, `regdate`) VALUES
    	(1, '1', '0000-00-00', '2011-11-30 14:32:01'),
    	(2, '2', '2011-11-21', '2011-11-30 14:32:01'),
    	(3, '3', '0000-00-00', '2011-11-30 14:32:01'),
    	(4, '3', '0000-00-00', '2011-11-30 14:32:01');
    /*!40000 ALTER TABLE `tbl_profile` ENABLE KEYS */;
    
    
    # Dumping structure for table testdrive.tbl_user
    CREATE TABLE IF NOT EXISTS `tbl_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(128) CHARACTER SET latin1 NOT NULL,
      `password` varchar(128) CHARACTER SET latin1 NOT NULL,
      `email` varchar(128) CHARACTER SET latin1 DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    # Dumping data for table testdrive.tbl_user: 4 rows
    /*!40000 ALTER TABLE `tbl_user` DISABLE KEYS */;
    INSERT INTO `tbl_user` (`id`, `username`, `password`, `email`) VALUES
    	(1, '1', '1', '1'),
    	(2, '2', '3', '3333456'),
    	(3, '2', '33', '33334'),
    	(4, 'admin', '123456', 'admin@admin.com');
    /*!40000 ALTER TABLE `tbl_user` ENABLE KEYS */;
    
     



    /yii_dev/testwebap/protected/models/TblUser.php

    1. <?php  
    2. class TblUser extends CActiveRecord  
    3. {  
    4.     public static function model($className=__CLASS__)  
    5.     {  
    6.         return parent::model($className);  
    7.     }  
    8.     public function tableName()  
    9.     {  
    10.         return 'tbl_user';  
    11.     }  
    12.     public function relations ()  
    13.     {  
    14.         return array(  
    15.             /*关系名字*/         
    16.             'profile' => array(   
    17.                     /*关联方式*/  
    18.                     self::HAS_ONE,   
    19.                      /*关系表的CActiveRecord类*/  
    20.                     'TblProfile',   
    21.                      /*关系表的外键,即tbl_profile通过哪一个字段和tbl_user主键关联.*/  
    22.                     'owner_id',  
    23.                      /*select显示的列。用string:'regdate,nickname',或者数组array('regdate','nickname')*/  
    24.                     'select' => array('regdate','nickname'),  
    25.                     /*条件:where 子句 。要保证实例化使用使用对象访问是能够访问,否这将会报non-boject错误*/  
    26.                     'condition' => 'owner_id<=4',  
    27.                     /*order by 排序*/                       
    28.                     'order' => 'owner_id DESC , nickname ASC',  
    29.                     /*where条件中追加 以AND 开头的条件子句。他会智能的判断是否该加AND。这样省去了你组合where条件。不会和'condition'选项冲突 
    30.                      WHERE (owner_id<=4) AND ( nickname!='abc') AND (`profile`.`owner_id`=:ypl0) ORDER BY owner_id DESC , nickname ASC 
    31.                      */  
    32.                     'on' => " nickname!='abc' ",  
    33.             ),  
    34.         );  
    35.     }  
    36. }  
    <?php
    class TblUser extends CActiveRecord
    {
    	public static function model($className=__CLASS__)
    	{
    		return parent::model($className);
    	}
    	public function tableName()
    	{
    		return 'tbl_user';
    	}
        public function relations ()
        {
            return array(
                /*关系名字*/       
                'profile' => array( 
                        /*关联方式*/
                        self::HAS_ONE, 
                         /*关系表的CActiveRecord类*/
                        'TblProfile', 
                         /*关系表的外键,即tbl_profile通过哪一个字段和tbl_user主键关联.*/
                        'owner_id',
                         /*select显示的列。用string:'regdate,nickname',或者数组array('regdate','nickname')*/
                        'select' => array('regdate','nickname'),
                        /*条件:where 子句 。要保证实例化使用使用对象访问是能够访问,否这将会报non-boject错误*/
                        'condition' => 'owner_id<=4',
                        /*order by 排序*/                     
                        'order' => 'owner_id DESC , nickname ASC',
                        /*where条件中追加 以AND 开头的条件子句。他会智能的判断是否该加AND。这样省去了你组合where条件。不会和'condition'选项冲突
                         WHERE (owner_id<=4) AND ( nickname!='abc') AND (`profile`.`owner_id`=:ypl0) ORDER BY owner_id DESC , nickname ASC
                         */
                        'on' => " nickname!='abc' ",
                ),
            );
        }
    }



    /yii_dev/testwebap/protected/models/TblProfile.

    1. <?php  
    2. class TblProfile extends CActiveRecord  
    3. {  
    4.     public static function model ($className = __CLASS__)  
    5.     {  
    6.         return parent::model($className);  
    7.     }  
    8.     public function tableName ()  
    9.     {  
    10.         return 'tbl_profile';  
    11.     }  
    12. }  
    <?php
    class TblProfile extends CActiveRecord
    {
        public static function model ($className = __CLASS__)
        {
            return parent::model($className);
        }
        public function tableName ()
        {
            return 'tbl_profile';
        }
    }



    /yii_dev/testwebap/protected/modules/testmod/controllers/DefaultController.php

    1. <?php  
    2. class DefaultController extends Controller  
    3. {  
    4.     public function actionIndex ()  
    5.     {  
    6.         $this->render('index');  
    7.     }  
    8.     public function actionIndex2 ()  
    9.     {  
    10.         $user = TblUser::model()->findByPk(2);  
    11.         var_dump( '\nusername:' . $user->username . 'nickname:' . $user->profile->nickname);  
    12.           
    13.         //or   
    14.         $userModel = new TblUser();  
    15.         $user = $userModel->findByPk(2);  
    16.         var_dump( '\nusername:' . $user->username . 'nickname:' . $user->profile->nickname);  
    17.           
    18.         $users = TblUser::model()->findAll();  
    19.         foreach ($users as $user) {  
    20.             var_dump( '\nid:' . $user->id . 'username:' . $user->username . 'nickname:' . $user->profile->nickname);  
    21.         }          
    22.         $users = TblUser::model()->findAll();  
    23.         exit();  
    24.     }  
  • 相关阅读:
    WebRTC学习资料大全
    WebRTC学习与DEMO资源一览
    WebRTC MCU( Multipoint Conferencing Unit)服务器调研
    基于Kurento的WebRTC移动视频群聊技术方案
    使用 nginx 和 rtmp 插件搭建视频直播和点播服务器
    利用nginx搭建RTMP视频点播、直播、HLS服务器
    几个学习流媒体的案例代码网址
    rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加
    Neo4j模糊查询及分页查询
    自定义中文全文索引
  • 原文地址:https://www.cnblogs.com/xiongsd/p/3054851.html
Copyright © 2011-2022 走看看