app/models/Category.php

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php
require_once __DIR__ . '/../../core/BaseModel.php';

class Category extends BaseModel {
    protected $table = 'categories';
    protected $fillable = ['name', 'slug', 'description', 'parent_id', 'sort_order', 'status'];
    
    public function getAllWithPostCount() {
        $sql = "SELECT c.*, COUNT(p.id) as post_count 
                FROM {$this->table} c 
                LEFT JOIN posts p ON c.id = p.category_id AND p.status = 'published' 
                GROUP BY c.id 
                ORDER BY c.sort_order ASC, c.id ASC";
        return $this->db->fetchAll($sql);
    }
    
    public function getActiveCategories() {
        $sql = "SELECT c.*, COUNT(p.id) as post_count 
                FROM {$this->table} c 
                LEFT JOIN posts p ON c.id = p.category_id AND p.status = 'published' 
                WHERE c.status = 1 
                GROUP BY c.id 
                ORDER BY c.sort_order ASC, c.id ASC";
        return $this->db->fetchAll($sql);
    }
    
    public function getTree() {
        $categories = $this->getActiveCategories();
        return $this->buildTree($categories);
    }
    
    private function buildTree($categories, $parentId = 0) {
        $tree = [];
        foreach ($categories as $category) {
            if ($category['parent_id'] == $parentId) {
                $children = $this->buildTree($categories, $category['id']);
                if ($children) {
                    $category['children'] = $children;
                }
                $tree[] = $category;
            }
        }
        return $tree;
    }
    
    public function getBySlug($slug) {
        return $this->findOneBy('slug', $slug);
    }
    
    public function hasChildren($id) {
        return $this->count('parent_id = ?', [$id]) > 0;
    }
    
    public function getChildIds($parentId) {
        $ids = [$parentId];
        $children = $this->findBy('parent_id', $parentId);
        foreach ($children as $child) {
            $ids = array_merge($ids, $this->getChildIds($child['id']));
        }
        return $ids;
后面还有 2 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。