美文网首页
[联表] -- YII2 GridView联表:文本框搜索、下拉

[联表] -- YII2 GridView联表:文本框搜索、下拉

作者: Medicine_8d60 | 来源:发表于2022-06-01 10:08 被阅读0次

用户资金记录表和用户表,两张表通过userId关联

需求:需要在资金记录表中添加两列,username用户名和realname真实姓名,并实现自动搜索

直接干货

第一步:找到用户资金记录表对应的AR模型类 ,common\models\BorrowAccountLog,在该文件中进行关联User表

并在属性中定义2个要查询的属性字段,定义这2个字段就可以在gridView中显示user表中的username字段数据了

    public $username;//这个是user表中username字段
    public $realname;//这个是user表中realname字段

    public function getUser(){
        return $this->hasOne(User::className(),['userId'=>'userId']);
    }

在SearchModel中的rules()方法中加入下面规则:

[['username','realname'],'safe'],//一定要加,不然搜索框出不来

search()方法中加入:

    query->joinWith(['user']);
    $query->select("hs_borrow_account_log.*, hs_user.username, hs_user.realname");

设置排序规则

    $dataProvider->setSort([   //添加-----排序
        'attributes' => [
           //其他字段不动
            'username' => [
                'asc' => [User::tableName().'.username' => SORT_ASC],
                'desc' => [User::tableName().'.username' => SORT_DESC],
                'label' => '用户名'
            ],
            'realname' => [
                'asc' => [User::tableName().'.realname' => SORT_ASC],
                'desc' => [User::tableName().'.realname' => SORT_DESC],
                'label' => '真实姓名'
            ]
        ]
    ]);

增加过滤条件

    $query->andFilterWhere(['like', 'hs_user.username', $this->username]);
    $query->andFilterWhere(['like', 'hs_user.realname', $this->realname]);
第二步 VIEW.php文件
//这个user就是model中getUser链表方法的user,或者直接写username
['label'=>'用户名',  'attribute' => 'username',  'value' => 'user.username' ],
['label'=>'真实姓名',  'attribute' => 'realname',  'value' => 'user.realname' ],

还有一种情况:我们需要对联表字段进行下拉框搜索,比如对状态进行搜索,我们可以这么干

    [
        'label'=>'用户类型',  'attribute' => 'type',  'value' => function ($model) {
                return $model->user->type == 1 ? '投资人' : '借款人';
        },
            'filter' => [0=>'借款人',1=>'投资人'
    ],//重点在这里,传入一个数组,会下拉框显示

        'headerOptions' => ['width' => '7%']
    ],

相关文章

  • [联表] -- YII2 GridView联表:文本框搜索、下拉

    用户资金记录表和用户表,两张表通过userId关联 需求:需要在资金记录表中添加两列,username用户名和re...

  • 常用方法

    A alias 联表查询方式 一、table() 二、联表查询(内联、左联、右联、全联)的语法 表1结构--- ...

  • mongo 联表查询方法

    这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架构变动,之后可能会联表查询)我用到的联表查询...

  • 一个列子理解 联合概率 边际概率 条件概率

    列联表 理解联合概率、边际概率与条件概率从列联表开始。 列联表是常见的用于描述类别变量间关系的形式。 上面是一个2...

  • 联表更新

    SQL Server示例: [update] a set a.name=b.name,a.age=b.age fr...

  • MySQL: 联表

    JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RI...

  • 联表删除

    sit bug: 表结构:a表是用户、系统、数据权限映射表(不包含所属权限类别字段)b表是数据权限表(包含所属权限...

  • 联表查询

  • Mcnemar检验,Kappa检验

    1. 配对四格表的卡方检验 熟悉经典比较的都知道有配对t检验,在列联表中也有配对的列联表。与配对t检验类似,配对列...

  • R语言学习(六)基本统计分析--中

    频数表和列联表 本节的数据来源于vcd包中的Arthritis数据集 一维列联表 可以使用table()函数生成简...

网友评论

      本文标题:[联表] -- YII2 GridView联表:文本框搜索、下拉

      本文链接:https://www.haomeiwen.com/subject/azmjprtx.html