- 18 张公共表更名(addon/attachment/configure/links/spider_log/spider_stat/sms/notice/ad/task/prop/medal/help/card -> common_*,member_wallets->member_wallet,score_rule/score_log -> member_*,addon_config->common_addonconf),模型全部对齐新表名,Db 直引用清零 - Attachment 模型补 表名绑定,修复富文本上传查 wxapp_attachment 1146 隐患 - install.sql + 迁移 SQL:backend_admin/backend_role delete_at 默认 0,修复软删除(NULL != 0)误过滤导致后台菜单为空 - AppService::boot() 支持插件 info.php 声明 commands 自动注册插件命令(psr-4 自动加载,坏类名自动跳过) - 各插件(haonav/mqttbroker/wxchat/articles/blog/forum 等)字段与配置同步调整 - 框架版本 1.1.0 -> 1.1.1
79 lines
2.4 KiB
PHP
79 lines
2.4 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ywxapp<admin@ywxapp.cn>
|
|
// +----------------------------------------------------------------------
|
|
declare (strict_types = 1);
|
|
|
|
namespace addon\haonav\model;
|
|
|
|
use ywxapp\model\BaseModel;
|
|
|
|
|
|
class Category extends BaseModel
|
|
{
|
|
|
|
protected function getOptions(): array
|
|
{
|
|
// 所有的参数配置统一返回
|
|
return [
|
|
'strict' => false,
|
|
'name' => 'haonav_category',
|
|
// 'connection' => '',
|
|
// 'query' => [],
|
|
// 'type' => [],
|
|
// 'hidden' => [],
|
|
// 'visible' => [],
|
|
// 'append' => [],
|
|
'autoRelation' => [],
|
|
'createTime' => 'create_at',
|
|
'updateTime' => 'update_at',
|
|
'dateFormat' => 'Y-m-d H:i:s',
|
|
];
|
|
}
|
|
|
|
|
|
public function links()
|
|
{
|
|
return $this->hasMany(Links::class, 'cid', 'id');
|
|
}
|
|
|
|
/**
|
|
* 二级分类(pid 指向自身)
|
|
*/
|
|
public function children()
|
|
{
|
|
return $this->hasMany(self::class, 'pid', 'id')->where('status', 1)->order('sort', 'desc');
|
|
}
|
|
|
|
/**
|
|
* 按二级分类分组的链接(首页/分类页用)
|
|
* 返回二级分类及其下属链接,sub_cid=0 的链接归入「常用」
|
|
*/
|
|
public function subLinks()
|
|
{
|
|
return $this->hasMany(Links::class, 'sub_cid', 'id')
|
|
->where('status', 1)->order('click_count', 'desc');
|
|
}
|
|
|
|
/**
|
|
* 删除前保护:存在子分类或下属链接时禁止删除,避免产生孤儿数据
|
|
* @param \think\Model $model
|
|
* @throws \think\Exception
|
|
*/
|
|
public static function onBeforeDelete($model)
|
|
{
|
|
$childCount = self::where('pid', $model->id)->count();
|
|
if ($childCount > 0) {
|
|
throw new \think\Exception('该分类下还存在 ' . $childCount . ' 个子分类,请先处理子分类');
|
|
}
|
|
$linkCount = \addon\haonav\model\Links::where('cid', $model->id)->count();
|
|
if ($linkCount > 0) {
|
|
throw new \think\Exception('该分类下还存在 ' . $linkCount . ' 个链接,请先移走或删除这些链接');
|
|
}
|
|
}
|
|
}
|