EsBaseActiveRecord.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace common\models\base;
  3. use yii\elasticsearch\ActiveRecord;
  4. class EsBaseActiveRecord extends ActiveRecord
  5. {
  6. public static function listPage($params = [], $count = false, $is_array = true)
  7. {
  8. $must = [];
  9. $obj =self::find();
  10. $data = [];
  11. if (!empty($params['where'])) {
  12. foreach ($params['where'] as $v) {
  13. $must[] = ['match' => $v];
  14. }
  15. $obj->query(['bool' => ['must' => $must]]);
  16. }
  17. if ($count) {
  18. $counts = $obj->count();
  19. $page = $params['page'] ?? 1;
  20. $page_size = $params['limit'] ?? 20;
  21. $page_count = ceil($counts / $page_size);
  22. $data['page_count'] = $page_count;
  23. $data['count'] = $count;
  24. $data['page_size'] = $page_size;
  25. $obj->offset($page - 1)->limit($page_size);
  26. }
  27. $obj->orderBy($params['order']??' created_at asc');
  28. if ($is_array) $obj->asArray();
  29. $list = $obj->all();
  30. foreach ($list as $v) {
  31. $data['list'][] = $v['_source'];
  32. }
  33. return $data;
  34. }
  35. }