DeviceStatsRepository.php 2.52 KB
<?php

namespace domain\device;

use domain\device\models\Device as DeviceModel;
use domain\device\models\DeviceStats as DeviceStatsModel;
use domain\manufacturer\models\Manufacturer as ManufacturerModel;
use domain\model\models\Model as ModelModel;
use domain\project\models\Project as ProjectModel;
use yii\db\Query;

class DeviceStatsRepository
{
    /**
     * @param $condition
     * @return null|static
     */
    static function findOne($condition)
    {
        return DeviceStatsModel::findOne($condition);
    }

    /**
     * 获取分页数据
     * @param $where
     * @param $offset
     * @param $limit
     * @return array|\yii\db\ActiveRecord[]
     */
    static function getPageList($where, $offset, $limit)
    {
        $upgradeFind = DeviceStatsModel::find()->alias("ds")
            ->select([
                "ds.*",
                "mf.name as manufacture_name",
                'de.serial_no',
                'de.device_id as device_device_id',
                'pj.name as project_name',
                'md.name as model_name',
            ]);
        $upgradeFind->leftJoin(ManufacturerModel::tableName() . " mf", "mf.id = ds.manufacture_id");
        $upgradeFind->leftJoin(DeviceModel::tableName() . " de", "de.id = ds.device_id");
        $upgradeFind->leftJoin(ProjectModel::tableName() . " pj", "pj.id = ds.project_id");
        $upgradeFind->leftJoin(ModelModel::tableName() . " md", "md.id = ds.model_id");

        if (!empty($where)) {
            $upgradeFind->where($where);
        }
        if ($offset) {
            $upgradeFind->offset($offset);
        }
        if ($limit) {
            $upgradeFind->limit($limit);
        }
        $upgradeFind->orderBy("ds.id desc");
        $upgradeFind->asArray();
        $dataList = $upgradeFind->all();

        return $dataList;
    }

    /**
     * 列表页面分页器数量
     * @param string $map
     */
    static function getPageCount($map = '')
    {
        $DeviceStatsFind = DeviceStatsModel::find()->alias("ds");
        $DeviceStatsFind->leftJoin(ManufacturerModel::tableName() . " mf", "mf.id = ds.manufacture_id");
        $DeviceStatsFind->leftJoin(DeviceModel::tableName() . " de", "de.id = ds.device_id");
        $DeviceStatsFind->leftJoin(ProjectModel::tableName() . " pj", "pj.id = ds.project_id");
        $DeviceStatsFind->leftJoin(ModelModel::tableName() . " md", "md.id = ds.model_id");
        if (!empty($map)) {
            $DeviceStatsFind->where($map);
        }
        $pageCount = $DeviceStatsFind->count();

        return $pageCount;
    }

}