资讯专栏INFORMATION COLUMN

在yii下使用model进行多表连接的demo

habren / 535人阅读

摘要:要是哪写的不好也欢迎您多批评说明一下这个不是什么困难的问题但是网上给的答案都不太正确或者不太好用。自己写了一个注释版本可以方便大家的工作。请大家在下载后将和里面的文件分别放到的和下然后在数据库里面执行文件这是一个关于员工信息的表单。

您要是看着好啊就转载, 写上文章的出处就成。
要是哪写的不好也欢迎您多批评

说明一下, 这个不是什么困难的问题, 但是网上给的答案都不太正确, 或者不太好用。
自己写了一个demo注释版本, 可以方便大家的工作。
请大家在下载后将models和controller里面的文件分别放到yii的models和controller下, 然后在数据库里面执行sql.sql文件

models
                                 |
   +----------------------------------------------------------------------+
 */

class Staff extends CActiveRecord{
    public static function model($className=__CLASS__){
        return parent::model($className);
    }
    public function tableName(){
        return "p3_staff"; // 主表的名称
    }
    public function rule(){
        
    }
    /* relations方法 */
    public function relations(){ 
        return array(  
            /*
               +----------------------------------------------------------------------+
               | 解释一下"type"=>array(self::BELONGS_TO, "Type", "type_id")           |
               | 1. type: 可以起一个你想起的名字, 在下面多表连接的时候需要使用它      |
               | 2. self::BELONGS_TO 是连接方式 代表多对一                            |
               | 3. Type: 是被连接的表所属类的文件名称 比如说/                        |
               | 我想连接type表 那么我就要在model下新建一个xxx.php 里面的table指向/   |   
               | 这张表                                                               | 
               | 4. type_id: 是主表的外键名称                                         |
               +----------------------------------------------------------------------+
             */
            "type"=>array(self::BELONGS_TO, "Type", "type_id"), 
            // 如果想要连接更多的表, 就按照上面type这条数据仿写就可以了 例如
            "depart"=>array(self::BELONGS_TO, "Depart", "depart_id"), 
        );
    } 
    /**
     * [getList 进行多表连接并获取数据]
     * @return [array] [返回多表连接后的数据]
     */
    public function getList(){
        $criteria = new CDbCriteria; 
        $criteria->alias = "t";
        $criteria->with = array("type", "depart"); // array里面填写relations返回的数组的键值, 并用,隔开
        $result = Staff::model()->with("type","depart")->findAll($criteria);
        $pageInfo = [];
        foreach ($result as $key=>$value) {
            $pageInfo[$key]["id"] = $value["id"];
            $pageInfo[$key]["name"] = $value["name"];
            $pageInfo[$key]["type_id"] = $value["type_id"];
            $pageInfo[$key]["depart_id"] = $value["depart_id"];
            $pageInfo[$key]["type_title"] = $value->type->title; // 注意 副表要这么写才行
            $pageInfo[$key]["depart_title"] = $value->depart->title;
        }
        return $pageInfo;
    } 
}
在controller里面调用

···

    $result = Staff::model()->getList();
    echo "
"; print_r($result);

···

我们就可以看到输出的信息了

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 二他妈妈
            [type_id] => 1
            [depart_id] => 2
            [type_title] => 不明真相的吃瓜群众-类型一
            [depart_title] => 部门2
        )
    ......

demo下载地址 密码: h852

链接描述

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30417.html

相关文章

  • yii2 ActiveRecord多表关联以及多表关联搜索实现

    摘要:今天把这个问题讲明白了,看看是怎么个多表关联以及如何去优化这个关联。现需要在列表展示表的来源渠道,且该渠道可搜索。关联表字段增加查询中的搜索模型也是通过实现的,该模型通过控制着哪个字段可搜索,哪个字段不可搜索。 作者:白狼 出处:http://www.manks.top/yii2_many_ar_relation_search.html 本文版权归作者,欢迎转载,但未经作者同意必须保留...

    venmos 评论0 收藏0
  • Yii 多表关联

    摘要:在里面对数据库操作有一个很方便的功能就是多表关联,通过在里面指定对某个表的关联,这样就可以很快得到相关信息而不需要自己去写复杂的语句。 在 Yii 里面对数据库操作有一个很方便的功能就是多表关联,通过在 model 里面指定对某个表的关联,这样就可以很快得到相关信息而不需要自己去写复杂的 sql 语句。 下面我们拿 user 表和 news 表举例。(一个用户发表了多篇文章) 首先,...

    warnerwu 评论0 收藏0
  • YII2中多表关联使用

    摘要:第二个参数是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。这里注意中的第二个是指关联的中的,第一个是指中的。 首先先来说明一下表结构 表结构 现在有订单表、用户表、商品清单表、商品库存表 showImg(https://segmentfault.com/img/bVRcME?w=833&h=244); showImg(https://segmentfault.com/i...

    vslam 评论0 收藏0
  • Yii2中hasOne、hasMany以及多对多关联查询用法

    摘要:前言是特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。需求分析使用一条查询语句就能把列表的数据全部展现出来,列表包含一对一,一对多,以及多对多的关系。不能破坏自有的表头排序功能,以及中的存值。相关资料中多表关联查询 前言 hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来...

    qc1iu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<