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 app\models;

use yii\db\ActiveRecord;
class Type extends ActiveRecord{
    public static function tableName(){
        return ‘type‘;
    }

}

第二个 AR Model 就稍微多了一丢丢了  请看

<?php

namespace app\models;

use yii\db\ActiveRecord;
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 app\controllers;

use yii\web\Controller;
use app\models\Article;
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);
    }

}

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

原文地址:https://www.cnblogs.com/sdfgdrg/p/10195677.html

时间: 2024-08-07 10:14:31

yii2.0AR两表联查的相关文章

mysql 两表联查分页排序效率优化

数据库中有两张表 t1 存储消息信息 +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI |

thinkjs&mdash;&mdash;两表联查

问题来源: 现有一张texture以及一张tradename表,两者的联系是texture表中有一字段名为tid对应tradename表中的id,而tradename表中却有一字段type,要求根据tradename表中的type值为texture表分类显示. 解决方案: 1.欠打的麻烦又慢的solution 刚拿到手时,脑中想的第一种解决方案就是在查出texture表中现有的数据后,再取所有的tid集合,用in在texture表中用in查询,得到tradename表中的所有信息,然后再继续各种

iwebshop两表联查

$tb_goods = new IQuery('goods as g'); $tb_goods->join='left join miao as m on m.goods_id=g.id'; $arr = $tb_goods->find(); $this->list = $arr;

yii2 实现多表联查

Group by 两表联查取另一表与之关联数据的总数

使用group by 需要查询的字段 必须要放在group by 后面 SELECT U.UserLotterySn,count(W.Userlotterysn) as WinCount,U.ActivityCode,CertType,CertNumber,LotterySumCount,LotteryCounted,IsBigWin,U.CreateBy,U.CreateDateFROM T_UserLottery U JOIN T_WinningUser W on W.UserLottery

结合真实的测试实例,记录一次SQL语句辅助功能测试的场景(包含多表联查及子查询)

本文结合实例讲解一下 SQL 语句通过数据库辅助进行功能测试.希望阅读本文的小伙伴,能通过这个场景实例体会到SQL 语句在真实的功能测试时起到的作用 本次功能测试涉及的sql 知识点如下: 1 SELECT 查询 2 where 子句 3 count() 4 to_char() 5 group by 6 order by 7 两表联查(这里涉及left join) 8 子查询嵌套 实例中的需求文档 : 系统的测试界面:(不好意思,写文章的时候,想去截一个好一点的图片,测试环境无法登录了) 前提解

Yii2中多表关联查询(join、joinwith) with是不执行sql的

Yii2中多表关联查询(join.joinwith) 我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name customer_id book_id) 图书表 (id book_name author_id) 作者表 (id author_name) 模型定义 下面是这4个个模型的定义,只写出其中的关联 Customer class Customer extends \

五表联查sql和复选框 增删改查

这是五表联查的效果图,如果这个不明显,那么用添加说话 这样就明显了把 这个送餐时间和地点,都是一对多的,那么这个菜单就是多对多,其实对于老鸟来说没有什么大不了,但是对于新手,我希望还是可以有点帮助的,这个是用Mybatis写的 首先我们先把sql给贡献出来,或许有些丑,不过,这反正也是给自己写的随笔无所谓了 select a.*,b.fname from    (select a.*,c.aname from (select a.*,b.name tname from    t_order a,

Yii2中多表关联查询(join、joinwith)

我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       customer_id   book_id) 图书表                    (id  book_name       author_id) 作者表                    (id  author_name) 模型定义 下面是这4个个模型的定义,只写