| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- namespace addons\StarChain\common\models;
- use common\models\base\BaseActiveRecord;
- use Yii;
- use yii\data\Pagination;
- /**
- * Base
- */
- class BaseModel extends BaseActiveRecord
- {
- /**
- * beforeSave
- *
- * @param boolean $insert
- * @return boolean
- */
- public function beforeSave($insert)
- {
- $time = time();
- if ($insert) {
- $this->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;
- }
- }
|