资讯专栏INFORMATION COLUMN

就写SQL咋的了~在Yii2中使用SqlDataProvider的方法

MarvinZhang / 3138人阅读

摘要:一般应用和需求的复杂程度,我们使用都可以搞定,除非我们实在无法通过来构造一个复杂的的时候,就是你的好伙伴了。和名字一样,接收一个原生的语句并且能生成一个带有参数的,并且前台的等都可以很好的使用它。

一般应用和需求的复杂程度,我们使用ActiveDataProvider都可以搞定,除非我们实在无法通过QueryBuilder来构造一个复杂的SQL的时候,SqlDataProvider就是你的好伙伴了。

和名字一样,SqlDataProvider接收一个原生的SQL语句并且能生成一个带有参数的dataProvider,并且前台的GridView等都可以很好的使用它。

直接上代码

在Action中如何使用它们
$totalCount = Yii::$app->db->createCommand("SELECT COUNT(*) FROM user WHERE sex=:sex", ["sex:" => 1])
            ->queryScalar();

$dataProvider = new SqlDataProvider([
    "sql" => "SELECT * FROM userWHERE sex=:sex",
    "params" => [":sex" => 1],
    "totalCount" => $totalCount,
    //"sort" =>false,//如果为假则删除排序
    "sort" => [
        "attributes" => [
            "username" => [
                "asc" => ["username" => SORT_ASC],
                "desc" => ["username" => SORT_DESC],
                "default" => SORT_DESC,
                "label" => "用户名",
            ],
            "sex" => [
                "asc" => ["sex" => SORT_ASC],
                "desc" => ["sex" => SORT_DESC],
                "default" => SORT_DESC,
                "label" => "性别",
            ],
            "created_on"
        ],
    ],
    "pagination" => [
        "pageSize" => 10,
    ],
]);

return $dataProvider;
在视图中如何使用它们
 $dataProvider,
    "columns" => [
        ["class" => "yiigridSerialColumn"],
        [
            "label" =>"昵称",
            "attribute" => "nickname",
            "value"=>function($data){
                return $data["nickname"];
            }
        ],
        "username",
        "sex",
        "created_on",
        ["class" => "yiigridActionColumn"],
    ],
]); ?>

你看懂了没,和ActiveDataProvider一个重要区别就是它数组的形式,而ActiveDataProvider是对象形式。

好,此篇结束,送给那些喜欢写原生SQL或不得不写原生SQL的小伙伴。

本文原创发布于微信公众号 北哥小报 , 严谨的原创技术文,Q群:171277552。

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

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

相关文章

  • Yii2 GridView使用方法

    摘要:是实现网格视图的小部件,一般用于报表视图的展示。就是连续的列,主要用于网格的行号,属于自增式的列。指定处理的类,必须。 Yii2 GridView是实现yii网格视图的小部件,一般用于报表视图的展示。今天,结合DataProvider(ArrayDataProvider以及SqlDataProvider)说一下GridView中的几个Columns(SerialColumn,DataC...

    Paul_King 评论0 收藏0
  • JavaScript学习第四天笔记(数组)

    摘要:示例代码如下索引数组输出结果为索引数组关联数组注意关联数组的数组的长度与元素的个数不一致,原因是的官方不支持关联数组。定义一个空数组访问二维数组中的元素循环遍历二维数组 数组 概述 数组是什么 数组是值的有序集合。数组中的每个值叫做一个元素,而每个元素在数组中都右一个唯一的位置。这个位置用数字表示,叫做索引数组;用字符串表示,叫做关联数组。JavaScript数组是无类型的;数组的元素...

    lncwwn 评论0 收藏0
  • yii过滤xss代码,防止sql注入教程

    摘要:好啦,我们看看在框架的不同版本中是怎么处理攻击,注入等问题的。那要是,又是怎样处理的喃考虑目前国内网站大部分采集文章十分频繁,更有甚者不注明原文出处,原作者更希望看客们查看原文,以防有任何问题不能更新所有文章,避免误导继续阅读 作者:白狼 出处:http://www.manks.top/yii2_filter_xss_code_or_safe_to_database.html 本文版权...

    Shonim 评论0 收藏0
  • 北哥大话Yii2缓存机制 - File缓存

    摘要:讲的好长作为北哥大话缓存机制第一篇,希望大家喜欢,为了一段日子里我会专注于分享的缓存机制。 有的兄弟一定会说,File缓存有什么好讲的那?不就是一个set,然后在一个get么?那你知道的只是皮毛~ 的确如大家所说,缓存从表现层看就是一个set(放数据),然后再一个get(拿数据),但是请记住,这样是不够的,如果你不了解每个缓存的实现原理、存储特点等等,你是无法使用对场景的,什么时候用F...

    cnTomato 评论0 收藏0
  • 记一次XX前端面试

    摘要:面试官说那我问你一个哲学的问题,为什么有数据结构这种东西哇,这是啥,巴拉巴拉扯了一通,大致就是物以类聚,人以群分,先人积累下来的经验,这些让我们更方便处理数据啥的。 前因,没有比摸鱼有趣的事了 距离自己被外派(俗称外包)出去,已经过了快五个月,工作的话,很闲。人啊,一定保持好的习惯,懒惰是会上瘾,日常摸鱼,怀疑人生,我是谁,我在哪,我要干什么。 中午吃饭的时候,收到了boss直聘的一条...

    Shisui 评论0 收藏0

发表评论

0条评论

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