
发表日期: 2021-04-26 10:04:41 浏览次数:125
启东网站优化【启东开通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元。
interface PhalApi_Model {
public function get($id, $fields = '*');
public function insert($data, $id = NULL);
public function update($id, $data);
public function delete($id);}复制代码上面的接口在规约层上提供了基于表主键的CURD基本操作,在具体实现时,需要注意两点:一是分表的处理;另一点则是LOB字段的序列化。
由于我们使用了NotORM进行数据库的操作,所以这里也提供了基于NotORM的Model基类:PhalApi_Model_NotORM。下面以我们熟悉的获取用户的基本信息为例,说明此基类的使用。
不使用Model基类的写法
下面是不使用Model基数的实现代码:
<?phpclass Model_User {
public function getByUserId($userId) {
return DI()->notorm->user->select('*')->where('id = ?', $userId)->fetch();
}}复制代码获取ID为1的用户信息,对应的调用为:
$model = new Model_User();$rs = $model->getByUserId(1);复制代码
继承Model基类的写法
若继承于PhalApi_Model_NotORM,则Model子类的实现代码是:
<?phpclass Model_User extends PhalApi_Model_NotORM {}复制代码从上面的代码可以看出,基类已经提供了基于主键的CURD操作,并且默认根据规则自动使用user作为表名。相应地,当需要获取ID为1的用户信息时,外部调用则调整为:
$model = new Model_User();$rs = $model->get(1);复制代码
再进一步,我们可以得到其他的基本操作:
$model = new Model_User();// 查询$row = $model->get(1);$row = $model->get(1, 'id, name'); //取指定的字段$row = $model->get(1, array('id', 'name')); //可以数组取指定要获取的字段// 更新$data = array('name' => 'test', 'update_time' => time());$model->update(1, $data); //基于主键的快速更新// 插入$data = array('name' => 'phalapi');$id = $model->insert($data);//$id = $model->insert($data, 5); //如果是分表,可以通过第二个参数指定分表的参考ID// 删除$model->delete(1);复制代码通过对比,可以发现,使用继承于PhalApi_Model_NotORM基类的写法更简单,并且更统一,而且能更好地封装对数据库的操作。因此,我们通常推荐使用此实现方式。
上面继承了PhalApiModel_NotORM的Model_User类,对应默认的表名为:user。默认表名的自动匹配规则是:取“Model”后面部分的字符全部转小写,并且在转化后会加上配置的表前缀。下面是更多Model子类及其自动映射的表名示例。
// 对应userinfo表class Model_UserInfo extends PhalApi_Model_NotORM { }// 对应app_settings表class Model_App_Settings extends PhalApi_Model_NotORM { }// 对应tags表class Model_Tags extends PhalApi_Model_NotORM { }复制代码但在以下场景或者其他需要手动指定表名的情况,可以重写PhalApi_Model_NotORM::getTableName($id)方法并手动指定表名。
存在分表
Model类名不含有“Model_”
自动匹配的表名与实际表名不符
数据库表使用蛇形命名法而类名使用大写字母分割的方式
如,当Model_User类对应的表名为:my_user表时,可这样重新指定表名:
<?phpclass Model_User extends PhalApi_Model_NotORM {
protected function getTableName($id) {
return 'my_user';
}}复制代码其中,$id参数用于进行分表的参考主键,只有当存在分表时才需要用到。通常传入的$id是整数,然后对分表的总数进行求余从而得出分表标识。例如有10张分表的user_session表:
<?phpclass Model_User_UserSession extends PhalApi_Model_NotORM {
const TABLE_NUM = 10;
protected function getTableName($id) {
$tableName = 'user_session';
if ($id !== null) {
$tableName .= '_' . ($id % self::TABLE_NUM);
}
return $tableName;
}复制代码即存在分表时,需要返回的格式为:表名称 + 下划线 + 分表标识。分表标识通常从0开始,为连续的自然数。
这里小结一下,对于使用Model子类的方式,可以使用默认自动匹配的表名。若表名不符合项目的需求,可以通过重写PhalApi_Model_NotORM::getTableName($id)方法手动指定。最后,若存在有分表,则需要结合$id参数,按一定的规则,拼接返回分表格式的表名。

服务热线
顶部
备案号: 苏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