首页 > 其他分享 >likeadmin多表关联复杂查询

likeadmin多表关联复杂查询

时间:2024-11-07 21:10:32浏览次数:1  
标签:多表 type al 查询 item params where change likeadmin

<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台(PHP版)
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用,可去除界面版权logo
// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
// | github下载:https://github.com/likeshop-github/likeadmin
// | 访问官网:https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------

namespace app\adminapi\lists\finance;

use app\adminapi\lists\BaseAdminDataLists;
use app\common\enum\user\AccountLogEnum;
use app\common\lists\ListsSearchInterface;
use app\common\model\user\UserAccountLog;
use app\common\service\FileService;


/**
 * 账记流水列表
 * Class AccountLogLists
 * @package app\adminapi\lists\finance
 */
class AccountLogLists extends BaseAdminDataLists implements ListsSearchInterface
{

    /**
     * @notes 搜索条件
     * @return array
     * @author 段誉
     * @date 2023/2/24 15:26
     */
    public function setSearch(): array
    {
        return [
            '=' => ['al.change_type'],
        ];
    }


    /**
     * @notes 搜索条件
     * @author 段誉
     * @date 2023/2/24 15:26
     */
    public function queryWhere()
    {
        $where = [];
        // 用户余额
        if (isset($this->params['type']) && $this->params['type'] == 'um') {
            $where[] = ['change_type', 'in', AccountLogEnum::getUserMoneyChangeType()];
        }

        if (!empty($this->params['user_info'])) {
            $where[] = ['u.sn|u.nickname|u.mobile|u.account', 'like', '%' . $this->params['user_info'] . '%'];
        }

        if (!empty($this->params['start_time'])) {
            $where[] = ['al.create_time', '>=', strtotime($this->params['start_time'])];
        }

        if (!empty($this->params['end_time'])) {
            $where[] = ['al.create_time', '<=', strtotime($this->params['end_time'])];
        }

        return $where;
    }


    /**
     * @notes 获取列表
     * @return array
     * @author 段誉
     * @date 2023/2/24 15:31
     */
    public function lists(): array
    {
        $field = 'u.nickname,u.account,u.sn,u.avatar,u.mobile,al.action,al.change_amount,al.left_amount,al.change_type,al.source_sn,al.create_time';
        $lists = UserAccountLog::alias('al')
            ->join('user u', 'u.id = al.user_id')
            ->field($field)
            ->where($this->searchWhere)
            ->where($this->queryWhere())
            ->order('al.id', 'desc')
            ->limit($this->limitOffset, $this->limitLength)
            ->select()
            ->toArray();

        foreach ($lists as &$item) {
            $item['avatar'] = FileService::getFileUrl($item['avatar']);
            $item['change_type_desc'] = AccountLogEnum::getChangeTypeDesc($item['change_type']);
            $symbol = $item['action'] == AccountLogEnum::INC ? '+' : '-';
            $item['change_amount'] = $symbol . $item['change_amount'];
        }

        return $lists;
    }


    /**
     * @notes 获取数量
     * @return int
     * @author 段誉
     * @date 2023/2/24 15:36
     */
    public function count(): int
    {
        return UserAccountLog::alias('al')
            ->join('user u', 'u.id = al.user_id')
            ->where($this->queryWhere())
            ->where($this->searchWhere)
            ->count();
    }
}

标签:多表,type,al,查询,item,params,where,change,likeadmin
From: https://www.cnblogs.com/bengguo/p/18533964

相关文章

  • 数据结构_链表_单向循环链表 & 双向链表的初始化、插入、删除、修改、查询打印(基于C语
    一、单向循环链表的原理与应用思考:对于单向链表而言,想要遍历链表,则必须从链表的首结点开始进行遍历,请问有没有更简单的方案实现链表中的数据的增删改查?回答:是有的,可以使用单向循环的链表进行设计,单向循环的链表的使用规则和普通的单向链表没有较大的区别,需要注意:单向循环链表的......
  • 前15天查询次数曲线
    publicintgetAuditCount(){intnum=0;try{Exampleexample=newExample(AuditInfo.class);SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");Datetoday=df.parse(df.format(newDate()));Dateyesterday=df.parse(df.format(newDate(......
  • WEB_方案查询F7的类型设置为F7某个字段的查询
    如下图,在方案查询条件中,【票据号码】与【软通票据】在单据上其实都是F7字段,但是票据号码在这里是字符串查询,而软通票据是F7的样式,这是怎么样将F7的字段查询弄成文本框查询的呢,实际上是通过修改单据列表的query里的属性来实现的,具体修改如下:如果选择的使用F7,则在方案查询中,字段......
  • 十一 MyBatis查询语句专题
    十一、MyBatis查询语句专题模块名:mybatis-007-select打包方式:jar引入依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml创建pojo类:Car创建Mapper接口:CarMapper创建Mapper接口对应的映射文件:co......
  • Java面试系列-MySQL面试题20道,InnoDB,索引类型,事务隔离级别,锁机制,MVCC,主从复制,慢查询,分
    文章目录1.MySQL中的InnoDB和MyISAM存储引擎有什么区别?2.MySQL中的索引类型有哪些?3.MySQL中的索引是如何工作的?4.MySQL中的事务隔离级别有哪些?5.MySQL中的锁机制有哪些?6.MySQL中的MVCC(多版本并发控制)是如何工作的?7.MySQL中的主从复制是如何工作的?8.MySQL中的分区......
  • 高级SQL技巧:提升数据库性能与查询效率
    索引优化索引类型B树索引:B树索引适用于多种数据库操作,包括等值查询、范围查询和排序。B树索引通过将数据存储在一个平衡树结构中,允许快速的数据访问。B树索引的深度影响查询性能,因此,选择正确的索引列和维护索引的健康状况是至关重要的。例如,对于一个大型的电子商务数据库,对产......
  • activiti查询发起、待办、已办理列表
    目录一、实体类 二、服务实现类 三、数据访问层一、实体类创建接收结果集的实体类。代码如下:@Data@EqualsAndHashCode(callSuper=false)@Accessors(chain=true)@ApiModel(value="用户查询",description="查询用户待办、已执行、发起流程相信")public......
  • python+flask计算机毕业设计公共交通查询系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于公共交通查询系统的研究,现有研究主要以通用的交通查询功能开发为主,如一些常见的线路查询、站点查询等功能的实现。专门针对提升公......
  • mysql 连接查询之内连接、外连接 代码示例
    mysql连接查询可以分为内连接与外连接,外连接又分为左外连接和右外连接,左外连接可以简称为左连接,右外连接可以简称为右连接表数据如下学生表:student学生课程:student_course内连接:将两表满足条件的记录进行笛卡尔乘积--以下3个查询等效,均为内连接select*fromstudentinn......
  • 海光 DCU信息查询
     查看GPU(加速卡)查看GPU型号rocminfo|grep-izifang(zifang表示:Z100)[root@worker-0root]rocminfo|grep-izifangName:ZIFANGName:ZIFANG查看GPU使用率设备及显存占用(每次显......