zoukankan      html  css  js  c++  java
  • yii2.0AR两表联查

    首先,建两个关联表。

    表一

    -- Table structure for article
    -- ----------------------------
    DROP TABLE IF EXISTS `article`;
    CREATE TABLE `article` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
    `new` text,
    `t_id` int(11) DEFAULT NULL COMMENT '关联id',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    

    表二

    -- ----------------------------
    -- Table structure for type
    -- ----------------------------
    DROP TABLE IF EXISTS `type`;
    CREATE TABLE `type` (
    `t_id` int(11) NOT NULL AUTO_INCREMENT,
    `t_name` varchar(255) DEFAULT NULL COMMENT '分类名',
    PRIMARY KEY (`t_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    

    两表关联字段是 article.t_id = type.t_id

    表建好之后,前戏就完成了,下边开始干活。

    <?php
    
    namespace appmodels;
    
    use yiidbActiveRecord;
    class Type extends ActiveRecord{
        public static function tableName(){
            return 'type';
        }
    
    }
    
    第二个 AR Model 就稍微多了一丢丢了  请看
    
    <?php
    
    namespace appmodels;
    
    use yiidbActiveRecord;
    class Article extends ActiveRecord{
    
        public static function tableName(){
            return'article';
        }
        //关联表      get(关联表Model名)
        public function getType(){
                               参数一 关联Model名   参数二 关联字段 不能写表.t_id 自己默认后边是本Model的表id  前边是关联表的id
            return $this->hasOne(Type::className(),['t_id'=>'t_id']);
        }
    
    }
    

    这就关联上了。

    下面就是,查询了:

    <?php
    
    
    namespace appcontrollers;
    
    use yiiwebController;
    use appmodelsArticle;
    class TestController extends Controller{
    
        //两表联查 数据
        public function actionIndex(){
                                         //关联表名 注意大小写    查询字段                       asArray()转为数组 否则是对象               
            $model = Article::find()->joinWith(['type'])->select('new,t_name,article.t_id')->asArray()->all();
            print_r($model);
        }
    
    }
    

    好了,完成了,就是这么简单。

  • 相关阅读:
    部署NetCore项目(本文介绍用用IIS部署)
    vs中添加MySql实体集流程
    一文搞定HashMap的实现原理
    二分查找
    hashcode返回值可能为负数
    哈希碰撞与生日攻击
    并发的第二天
    java并发编程-1
    排序的第一天
    并发的第一天
  • 原文地址:https://www.cnblogs.com/sdfgdrg/p/10195677.html
Copyright © 2011-2022 走看看