hasAttribute('created_at') && $this->created_at = $time; $this->hasAttribute('updated_at') && $this->updated_at = $time; } else { $this->hasAttribute('updated_at') && $this->updated_at = $time; } return true; } /** * 批量添加 * * @param array $data * @param boolean $auto_time 自动添加时间戳 * @return integer */ public static function batchInsert($data, $auto_time = true) { $time = time(); $data = array_map(function ($item) use ($time, $auto_time) { return $auto_time ? array_merge([ 'created_at' => $time, 'updated_at' => $time, ], $item) : $item; }, $data); $field = array_keys($data[array_key_first($data)]); return Yii::$app->db->createCommand()->batchInsert( static::tableName(), $field, $data )->execute(); } /** * 获取分页数据 * * @param integer $limit * @param callable $callback * @param string $order_by * @return array */ public static function getPaginationList( int $limit, callable $callback = null, string $order_by = 'id desc' ) :array { $model = static::find(); if (!empty($callback)) call_user_func($callback, $model); $pagination = new Pagination(['totalCount' => $model->count(), 'pageSize' => $limit]); $model->limit($pagination->limit)->offset($pagination->offset); $list = $model ->orderBy($order_by) ->asArray() ->all(); $data['list'] = $list; $data['pagination'] = $pagination; $data['page_count'] = $pagination->pageCount; $data['row_count'] = intval($pagination->totalCount); $data['page_size'] = $pagination->getLimit(); return $data; } }