2019独角兽企业重金招聘Python工程师标准>>>

在网上查过了很多yii框架多表查询的问题,但总没有适合自己的,自己建了几张表过来分析,把操作写出来分享Yii框架多表查询(一对一与多对一)给大家

查一对一或多对一(常使用到的就是文章和文章分类关系)

在yii数据库模型中比如有一个Post.php文件

代码如下:

class Post extends CActiveRecord{
    /*
     * 返回当前模型对象的静态方法
     * 重写父类CActiveRecord对应的方法
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }
    
    /*
     * 返回当前数据表的名字
     *  重写父类CActiveRecord对应的方法
     */
    public function tableName() {
        return '{{post}}';
    }
    //关联查询
    public function relations()
    {
        return array(

//Post与User的关系是BELONGS_TO(多对一)关系,这里的author_id是User中的author_id

//'select'=>'id,username'查出来的字段

'author'=>array(self::BELONGS_TO, 'User', 'author_id','select'=>'id,username'),
        );
    }
}

需要弄清楚的几点:
(1),VarName是指一个对像;
(2),RelationType。一共有4种,分别为self::HAS_MANY, self::BELONGS_TO, self::MANY_MANY, self::HAS_ONE。
(3),ClassName。即关联的另一个../model/类名.php。
(4),ForeignKey。谁是谁的外键?
(5),附加条件

要是在操作器中使用,那么我们得这么写:

public function actionIndex(){
        $post=post::model();
        $criteria = new CDbCriteria();

//加一个条件就是author_id=2的

//$criteria->condition ="author_id=2";

//这个是按什么条件排序

//$criteria->order = 't.author_id ASC';

$criteria->with = array ( 'author' );
        $result =$post->findAll( $criteria );
        print_r($result);

}

以上的例子使用原生态的sql语句是这样么写的:

SELECT * FROM wn_post as p left join wn_user as u ON u.id=p.author_id

转载于:https://my.oschina.net/shunshun/blog/220623

Yii框架多表查询(一对一与多对一)相关推荐

  1. yii mysql join_Yii框架连表查询操作示例

    本文实例讲述了Yii框架连表查询操作.分享给大家供大家参考,具体如下: Join //表连接 //查询出学生.班级.校区.记录表的所有数据 $data=Jf_record::find() ->j ...

  2. 7. MyBatis多表查询 - 一对一 - 一对多 - 多对多

    7. MyBatis多表查询 - 一对一 - 一对多 - 多对多 前言 在前面的篇章,我们已经熟悉了单表查询,下面我们来看看如何进行 多表查询. 数据准备 create database if not ...

  3. php yii框架addselect,PHP Yii框架之数据库查询操作总结

    Yii容易学习和使用.你只需要知道PHP和面向对象编程,便可以很快上手,而不必事先去学习一种新的架构或者模板语言.用Yii的开发速度非常之快,除框架本身之外,需要为应用所写的编码极少.事实上这是最高效 ...

  4. php验证规则表单,PHP Yii框架之表单验证规则大全

    Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用.Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程. 废话不多说了,直接给大家贴代码了. class ContactForm ...

  5. PHP Yii框架之表单验证规则大全

    Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用.Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程,本文给大家介绍php yii框架之表单验证规则大全,感兴趣的朋友一起学习吧 ...

  6. mybatis-plus多表查询(三表多对多关系)

    数据库表的关系无非就四种:1.一对多(多对一),2.一对一,3.多对多,4.没有关系.其实面对数据表的多对多关系并没有那么复杂,那要看你怎么实现,传统的方法无非就是查询sql语句,而我要的是不通过自己 ...

  7. [MySql]实现多表查询-一对一,一对多

    目录 多表关联关系的分类 mybatis中的多表查询: 数据库准备 项目目录 一对一查询(多对一) 方式一:(xml文件映射) 查询结果: 方式二:(注解映射) 一对多查询(一对多) 方式一:(xml ...

  8. sequelize如何建立关联关系表模型来实现联表查询?【多对多篇】

    如何用sequelize提供的方法,实现多对多联表查询? 我们以 RBAC(Role-Based Access Control,基于角色的访问控制)来举例说明. 简单地说,一个用户拥有若干角色,每一个 ...

  9. Mybatis实现多表查询(一对一、一对多、多对多)

    文章目录 一.一对一查询 1.1 模型 1.2 SQL语句 1.3 创建Order和User实体类 1.4 创建OrderMapper接口 1.5 配置OrderMapper.xml 1.6 测试 二 ...

  10. mybatis 多表查询 一对一 一对多查询

    本文举例: 1.订单信息表 2.订单详情表 3.发票表 三表关系: 订单信息表 订单信息详情表 1:n 订单信息表 发票表 1:1 需求: 查询订单表订单详情表和发票表所有信息: <!-- 订单 ...

最新文章

  1. 用Python来分析5天破10亿的哪吒,为啥这么火?
  2. FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算
  3. 定期清空Linux系统日志文件
  4. 枚举遍历法,你能循环遍历所有的枚举值吗?
  5. javaScript事件(一)事件流
  6. EJB3 学习笔记六
  7. 调色板栅格数据使用GDAL时注意
  8. Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
  9. 清华女生破解北斗?中国最年轻女博导揭秘背后实情
  10. 修改Sql Server 2000数据库名称
  11. 让你彻底理解线性代数中的概念——《线性代数的本质》系列视频笔记
  12. 阿里 P9 用 500 多页手册完成双十一高并发秒杀系统,绝了
  13. MySQL的安装与配置——详细教程 这是原地址https://www.cnblogs.com/winton-nfs/p/11524007.html
  14. 如何防止表单重复提交问题
  15. 牛客 最小互质数(筛法求解)
  16. 台湾代工三十年,“教父”难再寻
  17. jxls导出excel
  18. 20个免费的网络电话收集分享
  19. 为什么要做掌纹识别?
  20. 记一次.net core调用微信云开发Http Api的uploadFile,上传文件到云环境的坑爹的排错过程

热门文章

  1. c语言 头文件卫士详解,C 语言条件编译与防止头文件重复
  2. java编码规范概述_Java 编码规范 (转)
  3. vivaldi浏览器_两款可以提升效率的网络浏览器
  4. nbi可视化_教您通过NBI大数据可视化工具零编码轻松实现桑基图的制作
  5. python3 unicodedecodeerror_Python3 UnicodeDecodeError
  6. 谷歌:光靠软件修复不能完全防御“幽灵”漏洞
  7. void android.os.Bundle.putBoolean(java.lang.String
  8. SlidingMenu使用笔记
  9. CSS 3的display:盒类型详解
  10. 【转载】如何在Ubuntu上安装LAMP服务器系统?