CaiWuXiTong/app/Builders/Category.php
15061959991 1adf627c0d feat: 财务系统二次开发 - 营销账户账单功能
- 基础环境:Docker 部署配置,源码挂载实时同步
- 修复:super_admin 权限补全、登录重定向循环
- 开发:店铺营销账户账单 - 抖音账户(15字段汇总账单)
- 开发:店铺营销账户账单 - 淘系支付宝账户(8字段流水账单)
- 开发:店铺营销账户账单 - 拼多多账户(7字段流水账单)
- 业务页面导航集成:config/business_navigation.php + Business\Pages 控制器
- 各平台独立表结构和视图,互不影响
2026-07-21 18:43:52 +08:00

75 lines
2.1 KiB
PHP

<?php
namespace App\Builders;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Pagination\Paginator;
class Category extends Builder
{
/**
* Execute the query as a "select" statement.
*
* @param array|string $columns
* @return \Illuminate\Support\Collection
*/
public function get($columns = ['*'])
{
$collection = parent::get($columns);
return $collection->withChildren('sub_categories', function ($list, $parent, $relation, $level, $addChildren) {
$parent->load($relation);
$parent->level = $level;
$parent->syncOriginalAttribute('level');
$list->push($parent);
if ($parent->$relation->count() == 0) {
return;
}
foreach ($parent->$relation as $item) {
$addChildren($list, $item, $relation, $level + 1, $addChildren);
}
});
}
/**
* Get the categories excluding their children.
*
* @param array|string $columns
* @return \Illuminate\Support\Collection
*/
public function getWithoutChildren($columns = ['*'])
{
return parent::get($columns);
}
/**
* Paginate the given query.
*
* @param int|null $perPage
* @param array $columns
* @param string $pageName
* @param int|null $page
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*
* @throws \InvalidArgumentException
*/
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
$page = $page ?: Paginator::resolveCurrentPage($pageName);
$perPage = $perPage ?: $this->model->getPerPage();
$results = ($total = $this->toBase()->getCountForPagination())
? $this->forPage($page, $perPage)->getWithoutChildren($columns)
: $this->model->newCollection();
return $this->paginator($results, $total, $perPage, $page, [
'path' => Paginator::resolveCurrentPath(),
'pageName' => $pageName,
]);
}
}