
发表日期: 2021-04-26 09:57:56 浏览次数:103
启东400电话办理【启东网站公司】启东百度优化、启东域名注册、启东网店美工、启东微信公众号托管
启东市,江苏省直辖,南通市代管,位于江苏省东南端,长江入海口北岸,是江苏省日出最早的地方。 [1] 户籍总人口110.35万,常住人口94.95万(2019年)。 [2] 截至2020年6月,启东市下辖9个镇。 [3]
后周显德五年(958年),置海门县于东布洲,隶于通州,海门县域包括今启东中部、北部地区。民国十七年(1928年),于崇明外沙设启东县。1989年,撤销启东县,设立县级启东市。 [14] [56]
启东是全国对外开放口岸 [4] 、中国建筑之乡 [5] 、国家卫生城市 [6] 、国家园林城市 [7] 、全国文明城市 [8] 、国家级生态示范区 [9] 、节水型社会建设达标县 [10] 、紧密型县域医共体建设试点县 [11] 、革命文物保护利用片区分县 [12] ,海洋经济之乡、电动工具之乡、建筑之乡、教育之乡、版画之乡。 [1]
2019年,启东市地区生产总值1157.55亿元,第一产业增加值79.64亿元,第二产业增加值581.29亿元,第三产业增加值496.62亿元。三次产业比为6.9:50.2:42.9。人均地区生产总值121879元。
希望保留状态时,需要使用同一个实例。例如:
// 获取一个新的实例$user = DI()->notorm->user; $user->where('age > ?', 18);// 相当于:age > 18 AND name LIKE '%dog%'$user->where('name LIKE ?', '%dog%');复制代码可以看到,第二次查询后,会把前面的查询条件也累加上。
不希望保留状态时,需要每次使用新的实例。例如:
// 获取一个新的实例$user = DI()->notorm->user; $user->where('age > ?', 18);// 重新获取新的实例$user = DI()->notorm->user; // 此时只有:name LIKE '%dog%'$user->where('name LIKE ?', '%dog%');复制代码因为每次都是使用新的实例,所以不会出现条件叠加的情况。
关于这两者的使用场景,项目可根据情况选用,通常使用不保留状态的写法。在全局方式获取后并指定表名取得的表实例,和局部方式获取的表实例,每次都会返回新的表实例。
数据库的配置文件为./Config/dbs.php,默认使用的是MySQL数据库,所以需要配置MySQL的连接信息。servers选项用于配置数据库服务器相关信息,可以配置多组数据库实例,每组包括数据库的账号、密码、数据库名字等信息。不同的数据库实例,使用不同标识作为下标。
表2-11 MySQL数据库配置项
servers数据库配置项 | 说明 |
|---|---|
host | 数据库域名 |
name | 数据库名字 |
user | 数据库用户名 |
password | 数据库密码 |
port | 数据库端口 |
charset | 数据库字符集 |
tables选项用于配置数据库表的表前缀、主键字段和路由映射关系,可以配置多个表,下标为不带表前缀的表名,其中__default__下标选项为缺省的数据库路由,即未配置的数据库表将使用这一份默认配置。
表2-12 表配置项
tables表配置项 | 说明 |
|---|---|
prefix | 表前缀 |
key | 表主键 |
map | 数据库实例映射关系,可配置多组。每组格式为: |
例如默认数据库配置为:
return array(
/**
* DB数据库服务器集群
*/
'servers' => array(
'db_demo' => array( //服务器标识
'host' => 'localhost', //数据库域名
'name' => 'phalapi', //数据库名字
'user' => 'root', //数据库用户名
'password' => '', //数据库密码
'port' => '3306', //数据库端口
'charset' => 'UTF8', //数据库字符集
),
),
/**
* 自定义路由表
*/
'tables' => array(
//通用路由
'__default__' => array(
'prefix' => 'tbl_',
'key' => 'id',
'map' => array(
array('db' => 'db_demo'),
),
),
),);复制代码其中,在servers中配置了名称为dbdemo数据库实例,其host为localhost,名称为phalapi,用户名为root等。在tables中,只配置了通用路由,并且表前缀为tbl,主键均为id,并且全部使用db_demo数据库实例。
温馨提示:当tables中配置的db数据库实例不存在servers中时,将会提示数据库配置错误。
普通情况下,数据库连接失败时会这样提示:
{
"ret": 500,
"data": [],
"msg": "服务器运行错误: 数据库db_demo连接失败"}复制代码考虑到生产环境不方便爆露服务器的相关信息,故这样简化提示。当在开发过程中,需要定位数据库连接失败的原因时,可使用debug调试模式。开启调试后,当再次失败时,会看到类似这样的提示:
{
"ret": 500,
"data": [],
"msg": "服务器运行错误: 数据库db_demo连接失败,异常码:1045,错误原因:SQLSTATE[28000] [1045] ... ..."}复制代码然后,便可根据具体的错误提示进行排查解决。
我们一直在考虑,是否应该提供数据库的基本操作支持,以减少开发人员重复手工编写基本的数据操作。最后,我们认为是需要的。继而引发了新的问题:是以继承还是以委托来支持?
委托有助于降低继承的层级,但却需要编写同类的操作以完成委托。所以,这里提供了基于NotORM的Model基类:PhalApi_Model_NotORM。但提供这个基类还是会遇到一些问题,例如:如何界定基本操作?如何处理分表存储?如何支持定制化?
由于我们这里的Model使用了“表数据入口”模式,而不是“行数据入口”,也不是“活动纪录”,也不是复杂的“数据映射器”。所以在使用时可以考虑是否需要此基类。即使这样,你也可以很轻松转换到“行数据入口”和“活动纪录”模式。这里,PhalApi中的Model是更广义上的数据源层(后面会有更多说明),因此对应地PhalApi_Model_NotORM基类充当了数据库表访问入口的对象,处理表中所有的行。
在明白了Model基类的背景后,再来了解其具体的操作和如何继承会更有意义。具体的操作与数据表的结构相关,在约定编程下:即每一个表都有一个主键(通常为id,也可以自由配置)以及一个序列化LOB字段ext_data。我们很容易想到Model接口的定义。为了突出接口签名,注释已移除,感兴趣的同学可查看源码。

服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878