当前位置:首页>python>中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 1.车辆类型

中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 1.车辆类型

  • 2026-04-16 03:37:54
中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 1.车辆类型

1.车辆类型

基于从易到难方式,我们先添加车辆类型子模块。
从原始档案我们可以看到车辆类型子模块,有以下几个字段,然后我们开始一步一步添加车辆类型子模块。

字段名

类型

说明

类型编号

字符型

新增字段

车辆类型

字符型

首保公里数

整型

日常保养公里数(每次)

整型

备注

文本型

新增字段,个人习惯

类型编号:ODOO中在设计表的时候,每个表都有name这个字段,ODOO会使用name字段作为记录的标题。在其他模型中调用的时候也会被引用。
一个子模块,一般情况下我们需要创建数据模型、设置访问权限、创建视图层三步。如果有特殊需求还要添加业务逻辑层。

新增数据模型

在左侧列表myaddons->peijia->models上点击鼠标右键,选择new->Python File。
在弹出的对话框输入文件名car_type,点击Python file,PyCharm在指定的目录自动生成文件并打开。
我们录入以下代码:
# -*- coding: utf-8 -*-# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&# NebulaERP odoo14.0# QQ:50282# 邮件:50282@qq.com# 手机:1111111111# 作者:'Nebula'# 公司网址: www.erpSoft.org# Copyright 2012-2020 Nebula# 日期:2020/3/25# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&from odoo import fields, modelsclass NebulaCarType(models.Model):    _name = "nebula.car.type"    _description = "车辆类型"    _order = 'name'    name = fields.Char(string='类型编号', size=2required=True, copy=False, index=True)    name_type = fields.Char(string='类型名称')    active = fields.Boolean(default=True, string='是否启用', size=2)    first_maintain = fields.Integer(string='首保公里数', size=8default=3500)    every_maintain = fields.Integer(string='日常保养公里数', size=8default=7500)    note = fields.Text('备注')    # 数据库层面的约束,所以效率比较高    _sql_constraints = [('check_uniq_name''unique(name)''不允许同类型编号'),                        ('check_uniq_type''unique(name_type)''不允许同类型编号')                        ]
解释如下,后续将忽略已经解释过的内容。

# -*- coding: utf-8 -*-在第一行声明编码是utf-8

用“#&&&&&&&&&&&&&”包裹部分是版权相关信息,读者可自行处理。
from odoo import fields, models:Python代码导入语句,从Odoo包中导入 fields, models模块。我们如果对fields等有兴趣的话,可以按住ctrl键,再用鼠标点击fields,PyCharm就会打开对应的模块文件,使用者可以阅读源码,这就是开源的魅力。
接下来空两行的原因是因为PyCharm默认会用PEP8编码规范检查使用者编写的代码,如果只空一行的话,提示需要2个空行,发现1行。
为了代码美观大方,可读性强,我们尽量遵从PEP8编码规范来编写代码。
class NebulaCarType(models.Model):定义一个类,为了不和其他开发者或者官方类重名,建议采用项目名做前缀,也有开发者缩写做前缀的,或者公司有命名规范的,可依实际情况使用命名方法。这里类名采取驼峰命名法,该类继承自models.Model,或者说这个类是models.Model派生出来的一个子类。
_name = "nebula.car.type":_name属性定义了ODOO全局对该模型引用的标识符。ODOO引用模型的时候用的是_name属性,而不是类名。这里命名方式是用“.”来分隔,一般来说,用该模型业务相关的单数形式+ . + 英文单词来命名,比如系统中的pay.payment就是支付业务的支付模型的意思。笔者因car同名可能性太高,故在前面追加nebula英文名,同样也是个人喜好或看公司规定了。
_description = "车辆类型":_description属性不是必须的,但是为模型提供了一个用户友好的名称,后面可以看到,在设计视图的时候,ODOO会自动提取该字段显示。
_order = 'name':设置浏览模型记录时或列表视图的默认排序。这个值是SQL语句中order by 使用的字符串,所以可以传入符合SQL语法的任意值。
name = fields.Char(string='类型编号', size=2, required=True, copy=False, index=True)
声明一个字段,该字段相关属性如下:
名字:name
字段类型:Char
其他相关属性
size:Char专用属性,设置最大允许尺寸
required: 必填字段
copy:复制记录的时候不复制该字段
index: 索引
defalut:默认值
string: 该字段显示文本
注:结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;sql 语句就是对数据库进行操作的一种语言。
active字段用于激活记录,默认active= True的记录才显示。有时候我们想隐藏某些记录的话,需要将active设置为False。
_sql_constraints = [('check_uniq_name', 'unique(name)', '不允许同类型编号')]
类似这个语法是一种约束方式,_sql_constraints是odoo的属性,是一个元组的列表,每个元组是一个数据库约束。元组的第一个元素是约束名字,第二个元素是约束规则(数据库postqresql 约束规则),第三个参数是如果违反约束弹出来的警告信息。
在models目录下的__init__.py文件中引入car_type文件。

设置访问权限

权限通过security/ir.model.access.csv文件来实现,如果没有请自行添加该文件。

内容如下:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlinkaccess_nebula_car_type,nebula.car.type,model_nebula_car_type,group_peijia_manager,1,1,1,1
id:access_nebula_car_type是记录的外部标识符,模块唯一
name:nebula.car.type描述性标题,默认规则是模块名.类名
model_id:模型的外部标识符,ODOO自动生成的,一般是model_模块名称,点用_代替,
例:model_nebula_car_type
group_id:指明授权的安全组,这里给group_peijia_manager组授权。
perm_write,perm_create,perm_unlink:模块读、写、创建、删除权限。

这里就是给peijia管理组全部权限,赋值1即有权限。在之前添加权限组的时候已经把管理员添加到peijia管理组里面,所以我们用管理员登录是可以使用该模块的。

我们需要检查这个文件是否在__manifest__.py中data段被引用,没有则添加。

我们在'security/groups.xml',下添加一行记录并保存:
'security/ir.model.access.csv',

请注意顺序,ir.model.access.csv调用了groups.xml定义的权限组名,基于先声明再使用的原则,所以顺序不能错。

创建视图层

视图层为用户界面的描述,用XML文件定义,ODOO自动生成界面和交互操作功能。我们一般将视图层存放在views/目录下。

创建表单视图

在views目录新建car_type_views.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?><odoo>        <!-- 车辆类型列表 -->    <act_windowid="peijia.action_car_type_views"name="车辆类型"    res_model="nebula.car.type" view_mode="tree,form" /></odoo>
这里可以看到act_windows id的值和添加菜单项action的值相同。这里odoo会自动按照默认视图模版显示。
在__manifest__.py文件中,data段的views/car_views.xml前面添加
‘views/car_type_views.xml',引入视图文件。

添加菜单项

我们在car_views.xml中继续为车辆类型添加菜单,在原顶级菜单下,添加二级菜单:
<menuitem id="menu_peijia_base_data" name="基础资料" sequence="70" parent="menu_peijia_root"/>
在二级菜单下,再添加车辆类型菜单入口:
<menuitem id="menu_car_type_views" name="车辆类型"          parent="menu_peijia_base_data" sequence="110"          action="peijia.action_car_type_views"/>
menuitem:该项是菜单项。
id:是记录的外部标识符,菜单唯一值,方便其他菜单引用。
name:菜单显示的文本
sequence:菜单顺序,ODOO会先按菜单级次再按sequence值从小到大排序
parent:上级菜单的ID
action:会调用该子模块表单视图中ID为指定值的视图。

查看效果

应用中找到陪驾模块,点击升级。
升级完成后,点击左上角图标,点击汽车陪驾,进入汽车陪驾模块。
因目前只有汽车类型模块,且之前已经设置管理员有该模块的权限,所以ODOO会直接进入该模块。
我们点击创建按钮,在默认的录入界面输入第一个车辆类型。
点击保存后,显示单条记录,我们可以点击编辑按钮编辑该条记录,或点击创建按钮创建新的车辆类型,也可以点击动作菜单展开更多操作。
存档:设置字段active为是,反之为取消存档,设置字段active为否,我们之前已经设置active在汽车类型中作为“是否启用”标识,所以存档操作影响是否启用字段值。
删除:删除该条记录。
复制:以当前记录为模版,复制出一条新的记录。
关于复制:复制的时候,会以当前记录为蓝本,后台新建一条记录,再检查这条记录是不是符合条件,符合条件,就保存到数据库中,否则会提示错误信息。
该子模块name字段设置为不可复制,且必填,所以提示name在复制的时候不能完成。
解决方法可以设置一个默认值,每次复制后记得修改该默认值。
当我们新建的时候,如果类型编号或类型名称和数据库中记录重复的时候,也会提示错误。
修改后数据模型中NebulaCarType如下:
class NebulaCarType(models.Model):    _name = "nebula.car.type"    _description = "车辆类型"    _order = 'name'    name = fields.Char(string='类型编号', size=2, required=True                       copy=False, index=Truedefault='99')    name_type = fields.Char(string='类型名称', required=True                            copy=Falsedefault='待修改')    active = fields.Boolean(default=True, string='是否启用', size=2)    first_maintain = fields.Integer(string='首保公里数', size=8default=3500)    every_maintain = fields.Integer(string='日常保养公里数', size=8default=7500)    note = fields.Text('备注')    # 数据库层面的约束,所以效率比较高    _sql_constraints = [('check_uniq_name''unique(name)''不允许同类型编号'),                        ('check_uniq_type''unique(name_type)''不允许同类型名称')                        ]

子模块创建小结

    在models目录下新增car_type.py文件,里面有数据模型定义
    在models目录下的__init__.py文件中,添加对car_type文件的引用
    检查项目目录下的__init__.py文件有对models目录的引用
    修改security目录ir.model.access.csv文件,将该数据模型赋权限给陪驾管理组
 检查项目目录下的__manifest__.py文件中data段有对ir.model.access.csv文件的引用
    在views目录下新增car_type_views.xml文件,定义一个最基础的界面
 在项目目录下的__manifest__.py文件中data段添加对car_type_views.xml的引用
    在views目录下car_views.xml文件中新增对车辆类型的相关菜单信息
    重启odoo
    应用中陪驾模块升级
完毕!

完善界面

系统默认的界面可直接拿来使用,但是对于苛刻的用户来说,总是有各种需求,让我们继续完善界面。
视图有多种展现的方式,常用的有以下几个。
    tree:列表视图
    form:表单视图
    graph:图表视图
    search:搜索视图
在xml文件中定义视图的记录,如下代码,代码来源于odoo官方文档。

<record model="ir.ui.view" id="view_id">

<field name="name">view.name</field>

<field name="model">object_name</field>

<field name="priority" eval="16"/>

<field name="arch" type="xml">

<!-- view content: <form>, <tree>, <graph>, ... -->

</field>

</record>

这条记录会转换成ir.ui.view表中的数据,供odoo调用。
<!-- view content: <form>, <tree>, <graph>, ... -->这里可以插入form、tree、graph等视图。
如果遇到更新错误或不生效等问题, 可以在ir_ui_view数据表里删除对应视图记录后再更新。
列表视图代码示例:
有几列就写几列的字段名称。
表单视图示例:
<treestring="Idea list"><fieldname="name"/><fieldname="inventor_id"/></tree>有几列就写几列的字段名称。表单视图示例:<formstring="Idea form"><groupcolspan="4"><groupcolspan="2"col="2"><separatorstring="General stuff"colspan="2"/><fieldname="name"/><fieldname="inventor_id"/>	        </group><groupcolspan="2"col="2"><separatorstring="Dates"colspan="2"/><fieldname="active"/><fieldname="invent_date"readonly="1"/></group><notebookcolspan="4"><pagestring="Description"><fieldname="description"nolabel="1"/></page></notebook><fieldname="state"/></group></form>
每组字段有其特殊含义,读者多看多写自然有所收获。
搜索视图示例:
<search><fieldname="name"/><fieldname="inventor_id"/></search>
如果要添加搜索字段,需要自定义搜索字段。
下面将在car_type_views.xml中段中添加相关代码。

添加表单视图代码

<recordmodel="ir.ui.view"id="peijia.form_car_type_views">    <fieldname="name">peijia.car.type.form</field>    <fieldname="model">nebula.car.type</field>    <fieldname="arch"type="xml">        <formstring="表单">            <sheet>                <divclass="oe_button_box"name="button_box"/>                <groupname="group_top">                    <groupname="group_left">                        <fieldname="name"/>                        <fieldname="active"/>                    </group>                    <groupname="group_right">                        <fieldname="name_type"/>                        <fieldname="first_maintain"/>                        <fieldname="every_maintain"/>                    </group>                    <fieldname="note"widget="many2many_tags"/>                </group>            </sheet>        </form>    </field></record>
效果如下:

添加列表视图代码

<recordmodel="ir.ui.view"id="peijia.tree_car_type_views">    <fieldname="name">peijia.car.type.tree</field>    <fieldname="model">nebula.car.type</field>    <fieldname="priority">1</field>    <fieldname="arch"type="xml">        <treestring="列表">            <fieldname="active"/>            <fieldname="name"/>            <fieldname="name_type"/>        </tree>    </field></record>
效果如下:

添加搜索视图代码

<recordmodel="ir.ui.view"id="peijia.search_car_type_views">    <fieldname="name">peijia.car.type.search</field>    <fieldname="model">nebula.car.type</field>    <fieldname="arch"type="xml">        <search>            <fieldname="name"/>            <fieldname="name_type"/>        </search>    </field></record>
效果如下:
将原代码act_window部分全部删除,用推荐代码替换。
<recordmodel="ir.actions.act_window"id="peijia.action_car_type_views">    <fieldname="name">车辆类型</field>    <fieldname="res_model">nebula.car.type</field>    <fieldname="view_mode">tree,form</field></record>
最后,我们在应用中升级陪驾模块,就可以看到效果了。
代码截图:

关键点

代码中<odoo><data></data></odoo>格式是odoo约定的格式,请勿更改。
<record></record>表示是一条记录。
model的值一般情况下是odoo中的一个特殊的表。
id:不用多说,定义后供外部使用,不可重名。
field:不同的name代表不同的意思,请根据实际情况理解,实在不行先搁置。
widget
Odoo中定义了字段的显示形式,不同字段类型的字段都有其不同的默认widget负责展示。
我们也可以在视图文件上,为具体字段指定具体的widget,以达到我们想要的展示效果。
widget="statusbar":头部状态条标签
widget="email":电子邮件地址标签
widget="selection" :下拉选择标签
widget="mail_followers" :关注者标签
widget="mail_thread" :消息标签
widget="progressbar" :进度条,按百分比标签
widget="one2many_list" :一对多列表标签
widget="many2many_tags": 多对多显示标签
widget="url" :网站链接标签
widget='image' :图片标签
widget="many2many_kanban": 看板标签
widget="handler" :触发标签
widget="radio" :单选标签
widget="char_domain" :字符域标签
widget="monetary" :价格(和精度位数相关)标签、金额标签
widget="float_time" :单精度时间标签
widget="html": html相关标签
widget="pad" :pad显示相关标签
widget="date": 日期标签
widget='text' :文本标签
widget="sparkline_bar": 燃尽标签
widget="checkbox" :复选框标签
widget="reference" :关联标签

创建默认数据

留个预习作业,请参考下篇中创建默认数据方法,创建汽车类型的默认数据。
文件名为car_type_data.xml。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-16 03:54:37 HTTP/2.0 GET : https://f.mffb.com.cn/a/485911.html
  2. 运行时间 : 0.089322s [ 吞吐率:11.20req/s ] 内存消耗:4,489.37kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6c94b0fedd9568431a1fdeadc6a2c4d2
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000548s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000819s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000357s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000320s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000509s ]
  6. SELECT * FROM `set` [ RunTime:0.000229s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000635s ]
  8. SELECT * FROM `article` WHERE `id` = 485911 LIMIT 1 [ RunTime:0.000515s ]
  9. UPDATE `article` SET `lasttime` = 1776282877 WHERE `id` = 485911 [ RunTime:0.008494s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000272s ]
  11. SELECT * FROM `article` WHERE `id` < 485911 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000465s ]
  12. SELECT * FROM `article` WHERE `id` > 485911 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000407s ]
  13. SELECT * FROM `article` WHERE `id` < 485911 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001716s ]
  14. SELECT * FROM `article` WHERE `id` < 485911 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000784s ]
  15. SELECT * FROM `article` WHERE `id` < 485911 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000792s ]
0.091079s