Yii2 使用 Joins 查询

Join()

JOIN_TYPE = INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN 等等

语法

$query = new Query;
$query  ->select([‘SELECT COLUMNS‘])
        ->from(‘TABLE_NAME_1‘)
        ->join( ‘JOIN_TYPE‘,
                ‘TABLE_NAME_2‘,
                ‘TABLE_NAME_2.COLUMN =TABLE_NAME_1.COLUMN‘
            );
$command = $query->createCommand();
$data = $command->queryAll();

示例一

$query = new Query;
$query  ->select([
        ‘tbl_user.username AS name‘,
        ‘tbl_category.categoryname as  Category‘,
        ‘tbl_document.documentname‘]
        )
    ->from(‘tbl_user‘)
    ->join(‘LEFT OUTER JOIN‘, ‘tbl_category‘,
                ‘tbl_category.createdby =tbl_user.userid‘)
    ->join(‘LEFT OUTER JOIN‘, ‘tbl_document‘,
                ‘tbl_category.cid =tbl_document.did‘)
    ->LIMIT(5)  ; 

$command = $query->createCommand();
$data = $command->queryAll();

输出语句

SELECT `tbl_user`.`username` AS `name`, `tbl_category`.`categoryname` AS `Category`
FROM `tbl_user` LEFT OUTER JOIN `tbl_category`
ON tbl_category.createdby =tbl_user.userid
LEFT OUTER JOIN `tbl_document`
ON tbl_category.cid =tbl_document.did
LIMIT 5

leftJoin()

示例一

$query = new Query;
$query  ->select([‘tbl_user.username AS name‘, ‘tbl_category.type as Category‘])
        ->from(‘tbl_user‘)
        ->leftJoin(‘tbl_category‘, ‘tbl_category.createdby = tbl_user.userid‘)
        ->limit(2);
$command = $query->createCommand();
$data = $command->queryAll();

输出语句

SELECT `tbl_user`.`username` AS `name`, `tbl_category`.`type` AS `Category`
    FROM `tbl_user` LEFT JOIN `tbl_category`
    ON tbl_category.createdby = tbl_user.useridd
    LIMIT 2  
时间: 2024-09-29 16:08:43

Yii2 使用 Joins 查询的相关文章

yii2.0数据库查询修改等方法

yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all();    此方法返回所有数据: 这些查询出来是对象形式,但是一般转换成数组格式: Test::find()->asArray()->all();     加上asArray()就取得数组形式的数据了,下面的自行添加. Test::findOne($id);   此方法返回 主键 id=1  的一条数据(举个例子): 条件查询:wher

yii2中关联查询

yii2 ActiveRecord多表关联以及多表关联搜索的实现 一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecord是怎么个多表关联以及如何去优化这个关联. 场景需求: 假设我们有一张用户表user和一张用户渠道表auth,两张数据表通过user.id和auth.uid进行一对一关联.现需要在user列表展示auth表的来源渠道source,且该渠道可搜索. 首先我们先通过gii生成user和auth系列相关的

yii2数据条件查询-where专题

条件查询 $customers = Customer::find()->where($cond)->all(); $cond就是我们所谓的条件,条件的写法也根据查询数据的不同存在差异,那么如何用yii2的方式来写查询条件呢? [[简单条件]] // SQL: (type = 1) AND (status = 2). $cond = ['type' => 1, 'status' => 2]  // SQL:(id IN (1, 2, 3)) AND (status = 2) $con

Yii2 联表查询数据丢失,即出现主键覆盖情况的解决方法

前段时间做项目,遇到一个问题,用yii2的AR连表查询数据的时候,理应该查出来更多的数据,但是实际得到的只有部分数据: 例如,有这么一个查询: $query = OperaHotelRoom::find() ->select(['a.ID','a.ROOM_NAME','a.PARENT_ROOM_TYPE']) ->joinWith('runHotel b') ->from('opera_hotel_room a') ->where(['a.HOTEL_ID' => 197

[moka同学]Yii2.0循环查询并对结果累加求和

在控制器中查询好数据  $model 在视图中输入 <?php foreach($model as $key=>$r):?> <tr class="text-center"> <td><?=$r->id?></td> <td><?=$r->name?></td> <td><?php echo Province::find()->where(['cou

Yii2.0 数据库查询

User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据: User::find()->where(['name' => '小伙儿'])->all(); 此方法返回 ['name' => '小伙儿']

[moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)

方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方法二:(直接拼写sql语句) $sql = "select * from `usho_community_mail` where date_format(`created_at`,'%Y%m') = date_format(curdate() ,'%Y%m') AND `com_id`=$id AN

yii2连表查询

$list = Setting::find()->alias('s') ->where(['s.store_id' => $this->store_id]) ->leftJoin('{{%qrcode}} q', 'q.store_id=s.store_id and q.is_delete=0') ->select(['s.level', 'q.qrcode_bg']) ->asArray()->one(); 原文地址:https://www.cnblogs

yii2 Query Builder 查询打印sql语句

$query = new Query(); $query->select('gs.*, g.goods_images, sa.attr_name, sa.is_default, sa.alias_sort')->from(GoodsSpec::tableName() . ' gs'); $query->leftJoin(SpecAlias::tableName() . ' sa', 'gs.attr_id = sa.attr_id and gs.goods_id = sa.goods_i