swoft速学:数据库配置、实体定义

本文围绕Swoft框架展开数据库操作介绍。包含数据库配置,可参考官方文档修改代码;数据实体定义,需先在数据库建表,利用内置命令生成实体类;查询器使用,通过创建控制器实现,访问特定页面可响应json字符串。

1、数据库配置
官方文档地址:https://doc.swoft.org/master/zh-CN/db/config.html

默认是给出的主从配置,这里暂不考虑主从,config/properties/db.php代码修改如下:

<?php

return [
    'master' => [
        'name'        => 'master',
        'uri'         => [
            '127.0.0.1:3306/test?user=root&password=root&charset=utf8mb4'
        ],
        'minActive'   => 8,
        'maxActive'   => 8,
        'maxWait'     => 8,
        'timeout'     => 8,
        'maxIdleTime' => 60,
        'maxWaitTime' => 3,
    ]
];

本地test数据库。
数据库配置文件中各项参数具体什么作用,官方文档里都有介绍。

2、数据实体定义
官方文档:https://doc.swoft.org/master/zh-CN/db/entity.html

开始之前,在test数据库里创建好news数据表,表结构随你:

CREATE TABLE `news` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;

swoft 提供了内置命令帮助快速生成实体类:

php bin/swoft entity:create -d test news

执行成功之后,会在App\Models\Entity目录下创建一个News.php文件,代码如下:

<?php
namespace App\Models\Entity;

use Swoft\Db\Model;
use Swoft\Db\Bean\Annotation\Column;
use Swoft\Db\Bean\Annotation\Entity;
use Swoft\Db\Bean\Annotation\Id;
use Swoft\Db\Bean\Annotation\Required;
use Swoft\Db\Bean\Annotation\Table;
use Swoft\Db\Types;

/**
 * @Entity()
 * @Table(name="news")
 * @uses      News
 */
class News extends Model
{
    /**
     * @var int $id 
     * @Id()
     * @Column(name="id", type="integer")
     */
    private $id;

    /**
     * @var string $title 
     * @Column(name="title", type="string", length=255, default="")
     */
    private $title;

    /**
     * @param int $value
     * @return $this
     */
    public function setId(int $value)
    {
        $this->id = $value;

        return $this;
    }

    /**
     * @param string $value
     * @return $this
     */
    public function setTitle(string $value): self
    {
        $this->title = $value;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string
     */
    public function getTitle()
    {
        return $this->title;
    }

}

3、查询器使用
https://doc.swoft.org/master/zh-CN/db/query.html

Query::table(News::class)->orderBy("id","desc")->limit(3)->get()->getResult();

news表排倒序取3条,结果集为数组。

在控制中实现,我们这里创建一个提供API的控制器,在App\Controllers\Api目录下创建NewsController.php,代码如下:

<?php
namespace App\Controllers\Api;

use App\Models\Entity\News;
use Swoft\Db\Query;
use Swoft\Http\Server\Bean\Annotation\Controller;
use Swoft\Http\Server\Bean\Annotation\RequestMapping;
use Swoft\Http\Server\Bean\Annotation\RequestMethod;

/**
 * @Controller("/news")
 */
class NewsController
{
    /**
     * @RequestMapping(route="list", method={RequestMethod::GET})
     */
    public function getList()
    {
        return return ["id"=>1,"title"=>"title11111"];
    }

}

浏览器访问 http://localhost/news/list 页面响应一段json字符串。如:{"id":1,"title":"title11111"}

<think>我们面对的是一个有十年工作经验、具备业务理解能力但几乎零代码基础的员。这类员的核心优势在于业务洞察力和行业经验,但技术实践是短板。因此习路径设计需遵循三个原则:**业务问题驱动**、**最小必要知识**、**即时反馈循环**。以下是针对性规划: --- ### **一、习目标定位:业务技术桥梁角色** 根据SWOT分析[^1],建议聚焦**业务逻辑代码化**能力而非纯技术深度: ```mermaid graph LR A[业务需求] --> B(用代码实现业务规则) B --> C[数据验证与分析] C --> D[技术方案沟通] ``` > 关键目标:将熟悉的业务场景转化为基础代码,例如将销售提成规则写成函数,用脚本自动化周报统计。 --- ### **二、分阶段习路径** #### **阶段1:Python基础语法(1个月)** - **习内容**: - 变量、循环、条件语句(实现业务规则判断) - 函数定义(封装业务逻辑) - 文件读写(处理业务数据) - **实践工具**: - [Google Colab](https://colab.research.google.com/):免安装运行代码,支持Markdown注释(适合业务文档混合编写) - 示例:将销售提成规则转化为函数 ```python def calculate_bonus(sales: float, rank: int) -> float: """根据销售额和职级计算提成(业务规则示例)""" if rank == 1: return sales * 0.15 # 金牌销售提成15% elif sales > 100000: return sales * 0.12 # 大额订单提成12% return sales * 0.1 # 基础提成10% ``` #### **阶段2:数据处理核心技能(2个月)** - **聚焦领域**: - Pandas处理Excel/CSV业务数据 - 用Matplotlib绘制业务趋势图 - **典型场景**: ```mermaid graph TB 原始销售数据 --> 数据清洗 --> 月度统计 --> 可视化报表 ``` - **习资源**: - [DataCamp实战课程](https://www.datacamp.com/courses/intro-to-python-for-data-science)(业务场景化案例教) - 关键技巧:用`pd.read_excel()`加载数据,`groupby()`实现业务分组统计[^4] #### **阶段3:自动化脚本开发(1个月)** - **目标**:将重复业务操作自动化 - 示例1:自动合并多份Excel报表 - 示例2:邮件发送每日业务摘要 - **关键技术**: - Python办公自动化库(`openpyxl`, `smtplib`) - 错误处理机制确保业务连续性 --- ### **三、业务导向的习策略** 1. **从业务问题反推技术**: 例如需要分析用户留存率时,自然引入`pandas.DataFrame.groupby()`方法[^4]。 2. **代码即文档**: 在函数注释中直接写明业务规则(如上述`calculate_bonus`示例),强化技术业务关联[^2]。 3. **防御性编程**: 在关键业务函数中添加数据校验,避免脏数据导致系统崩溃: ```python assert sales >= 0, "销售额不能为负值" # 业务规则守护 ``` --- ### **四、技术债规避机制** 针对可维护性需求[^2]: - 初期即使用Git管理代码版本(推荐[GitHub Desktop](https://desktop.github.com/)图形化工具) - 为每个脚本创建`requirements.txt`记录依赖库 - 关键业务函数编写单元测试: ```python def test_bonus_calculation(): assert calculate_bonus(150000, 1) == 22500 # 验证金牌销售提成 assert calculate_bonus(50000, 2) == 5000 # 验证普通销售提成 ``` --- §§ 相关问题 §§ 1. 如何说服非技术团队接受自动化方案? 2. 业务逻辑代码化有哪些常见陷阱? 3. 如何评估自动化脚本的ROI(投资回报率)? 4. 哪些业务场景不适合代码化改造? > **进阶提示**:当具备基础能力后,可习[软件成分分析工具](https://www.xuanyusoft.com/)原理,理解企业级系统构建逻辑。 </think> ### 面向业务专家的代码习路径规划(10年经验+零代码基础) 基于您的业务理解优势和技术短板,结合SWOT分析框架[^1],设计**业务驱动型**习路径,聚焦**用代码解决业务问题**的核心目标: --- #### **一、习策略定位(SWOT导向)** ```mermaid graph LR S[优势 S] --> |业务理解| A1(快识别技术方案业务价值) W[劣势 W] --> |零代码基础| A2(避免底层细节初始阶段) O[机会 O] --> |数字化转型需求| A3(将业务洞察转化为技术方案) T[威胁 T] --> |技术迭代快| A4(聚焦可迁移的基础范式) ``` --- #### **二、三阶段习路径(6个月周期)** ##### **阶段1:业务逻辑代码化(1-2个月)** - **目标**:将熟悉业务规则转化为基础代码 - **工具**: - [Google Colab](https://colab.research.google.com/)(免安装Python环境) - [Jupyter Notebook](https://jupyter.org/)(交互式文档) - **习内容**: 1. 变量与数据类型:用代码表达业务实体 ```python # 客户订单业务对象 order = { "order_id": "2023-001", "products": ["A", "B"], "total_price": 299.0, "is_vip": True # 您的业务知识在此体现 } ``` 2. 条件分支:编码业务规则 ```python def calculate_discount(is_vip, total_price): if is_vip and total_price > 200: # 业务规则示例 return total_price * 0.8 # VIP大额订单8折 return total_price ``` 3. 数据集合:处理业务数据集 ```python sales_data = [120, 95, 210] # 季度销售额 avg_sales = sum(sales_data) / len(sales_data) ``` ##### **阶段2:业务流程自动化(2-3个月)** - **目标**:自动化重复性业务操作 - **关键技术**: - 文件处理(Excel/CSV) - 基础API调用 - 定时任务 - **典型项目**: ```mermaid graph TB A[读取Excel业务报表] --> B[清洗异常数据] B --> C[生成可视化图表] C --> D[邮件发送给管理层] ``` **代码片段**: ```python import pandas as pd # 业务数据分析(您的领域知识决定分析逻辑) sales_df = pd.read_excel("Q3_sales.xlsx") top_products = sales_df.groupby('product').sum().nlargest(3, 'revenue') ``` ##### **阶段3:技术方案设计(1-2个月)** - **目标**:用技术语言描述解决方案 - **交付物**: - 系统流程图(非完整代码) - 伪代码设计 - 技术选型建议书 - **示例架构设计**: ``` 1. 用户提交订单 → 2. 风控系统校验(您的业务规则) → 3. 库存系统扣减 → 4. 生成财务记录 ``` --- #### **三、关键保障措施** 1. **可维护性实践**: - 所有练习代码使用Git版本管理 - 为关键函数添加业务注释: ```python def calc_tax(amount): """ 根据2023年财税政策计算企业增值税 (此处依赖您的业务知识) """ return amount * 0.13 # 制造业增值税率 ``` 2. **习资源适配**: | 习需求 | 推荐资源 | |----------------|--------------------------------------------------------------------------| | 业务逻辑转代码 | 《Python for Data Analysis》(Wes McKinney) | | 技术方案设计 | 《架构整洁之道》(Robert C. Martin) 第1-4章 | | 即时实践 | [Kaggle微课程](https://www.kaggle.com/learn)(选业务相关主题如Customer Analytics) | 3. **认知减负策略**: - 初始阶段**跳过**: - 计算机组成原理 - 算法复杂度分析 - 多线程编程 - 后期按需补充: - 数据库基础(SQL) - API设计基础 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值