当前位置: 网站首页>小程序开发>网站优化

启东网站优化【启东开通400电话】启东网站搭建、启东微信公众号推文外包、启东开通京东拼多多设计、启东淘宝装修

发表日期: 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字段的序列化。

推荐使用Model基类

由于我们使用了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基类的写法更简单,并且更统一,而且能更好地封装对数据库的操作。因此,我们通常推荐使用此实现方式。

Model基类中的表名配置

上面继承了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参数,按一定的规则,拼接返回分表格式的表名。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

启东网站优化启东开通400电话启东网站搭建、启东微信公众号推文外包、启东开通京东拼多多设计、启东淘宝装修

400-111-6878
服务热线
顶部

备案号: 苏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