入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

php yii2 ar 方式确定 model 对应关系

创建时间:2016-09-05 投稿人: 浏览次数:899

yii2  ar 支持model的对应关系建立 支持 一对一。一对多方式的 数据查询

首先确定两个model 的 在对应的model 类中 编写 一个叫 getmodel方法

比如我这边写了两个表

tbl_user,tbl_group

CREATE TABLE `tbl_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `group_name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB   DEFAULT CHARSET=utf8

CREATE TABLE `tbl_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) DEFAULT NULL,
  `group_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB   DEFAULT CHARSET=utf8
使用gii 组件生成对应的 数据库 model 类

model名称分别为 TblGroup,TblUser

比如我这个这个 需要创建 user group 表之间的关联关系 

可以在 user 这个model中创建getTblGroup 这个方法声明两者之间的对应关系

    public function getTblGroup(){
        return $this->hasOne(TblGroup::className(),["group_id"=>"id"]);
    }

这样就确定了。他们两个的关联关系。为一对一

那么怎么去调用这个关联关系进行 数据查询呢

我这边简单的写了一个方法进行 两表的查询

<?php

namespace appcontrollers;

use Yii;
use yiiwebController;
use appmodelsTblUser;
class TestController extends Controller
{
    public function actionIndex(){
        $user_obj=TblUser::find();
        $user_obj->joinWith("tblGroup");
        echo $user_obj->createCommand()->getRawSql();//输出sql
        echo "<br>";
        $info=$user_obj->asArray()->all();
        echo "<pre>";
        print_r($info);die;
    }
}

SELECT `tbl_user`.* FROM `tbl_user` LEFT JOIN `tbl_group` ON `tbl_user`.`group_id` = `tbl_group`.`id`


生成的sql如上。

我这边是没有数据的

如果有数据你会发现查询出来打印的数据是这个样子的


如果为一对多关系 可以使用hasMany 创建对应的关联关系 具体使用与上面相同。如果有配置之类的东西不明确。可以直接查看 yii2 class 参考手册

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。