LogsModel::logsArchive PHP Метод

logsArchive() публичный Метод

重建知识归档,重建后的知识只存在归档表中,主知识表不在有该知识信息
public logsArchive ( ) : boolean
Результат boolean 是否重建成功
    public function logsArchive()
    {
        $logsTableName = $this->tablePrefix . 'x_logs';
        $today = getDate(time());
        // 上个月底的时间
        $dayBeforeTime = strtotime(date('Y-m-t 23:59:59', strtotime('-1 month')));
        // 主表是否存在31天前的知识
        if ($this->where('ctime<=' . $dayBeforeTime)->count()) {
            // 搜索下有多少个月的数据需要归档
            $findDate = D('')->query("SELECT DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m') AS lists FROM {$logsTableName} WHERE ctime <= " . $dayBeforeTime . " GROUP BY DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m')");
            // 每个月归档
            foreach ($findDate as $value) {
                $dataInfo = explode('-', $value['lists']);
                // 归档表的名称
                $archiveTableName = $logsTableName . '_' . $dataInfo[0] . '_' . $dataInfo[1];
                // 先创建表
                if (D('')->query("DESC {$archiveTableName}") == false) {
                    D('')->query("CREATE TABLE {$archiveTableName} LIKE {$logsTableName}");
                }
                $querySql = "DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m') = '" . $value[lists] . "'";
                $result = D('')->query("INSERT INTO {$archiveTableName} SELECT * FROM {$logsTableName} WHERE {$querySql}");
            }
            $this->where($querySql)->delete();
            return true;
        } else {
            return false;
        }
    }