• 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);
        }
    
    }
    

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

  • 相关阅读:
    最重要的是动手去做
    java中的native关键字
    用ant重新编译jdk加入调试信息
    UnSupported Encoding错误
    mysql中查看字符集的cmd指令
    java中的IO流读取文件
    分享一个jdk源码链接
    mysql dos启动出现1067错误的解决方法
    vs2010中的外部依赖项的含义
    vs2010中出现:程序管理器匹配不正确错误
  • 原文地址:https://www.cnblogs.com/sdfgdrg/p/10195677.html
Copyright © 2020-2023  润新知