`

在ECSHOP中使用laravel框架的orm组件 简化ecshop的二次开发

阅读更多

在长期的 ecshop二次开发中 我慢慢喜欢上了简单的php开发模式!可能是因为我最早是做前端开发的 ,php+smarty这种简单的组合让我更喜欢!要实现什么功能 只需要写个函数在 includes中 就可以轻松的引用了!

这些年 陆陆续续接触了很多PHP的框架,包括 ci symfony zf2  yii等等 甚至国产的thinkphp~~~ 对php的框架 我一直持观望的态度!也经常看到论坛里面  很多人为了证明某个框架更牛叉吵得面红耳赤。感觉比较可笑!我深信 每一种新的技术的产生 都是为了解决某类问题。

 

接触laravel之后 我很快喜欢上了这个php的框架!给人眼前一亮的感觉。基于稳定的symfony组件 加上非常容易上手 很快 我就想用laravel重写一遍 ecshop的前台所有文件!甚至我们下一步的所有php的项目都想换成这个框架!

php的ORM组件一直是我非常关注的!symfony里的doctrine 虽然也不错 但是太庞大 感觉不是很适合用在ecshop里面!使用完laravel的 Eloquent ORM后,感觉非常好!而且也比较轻量级!所以很快 我就用到了ecshop中!

 

首先 单独下载 Eloquent ORM

我们使用composer来安装 建立一个composer.json 文件

{    
     "require": { 
           "illuminate/database": "*" 
    }
}

 

然后运行:composer install

 然后就是等待 下载完成!

下载了一堆文件 ,截图如下:

 

主要的文件都在vendor里面  只需要引用这个文件夹即可

 

我们创建一个 database.php文件 文件内容见上面的截图!非常简单!

 

然后 我们开始在 ecshop中使用Eloquent ORM 来简化我们的ecshop开发!

 

比如:我想在ecshop后台增加一个财务管理记录!用来记录我们每天的收入记录!

 

我们把vendor和database.php 放到 includes目录下  通过如下代码来引用Eloquent ORM

include_once(ROOT_PATH .'includes/database.php');

 

简单说下 ecs_cw这个数据表的字段:

CREATE TABLE IF NOT EXISTS `ecs_cw` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `cw_name` varchar(255) NOT NULL,
  `price` decimal(10,1) NOT NULL,
  `cat_id` int(10) NOT NULL,
  `mw_date` int(10) NOT NULL,
  `kh_id` int(10) NOT NULL,
  `cw_tag` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

 也就主要的几个字段

 

id              收入编号

cw_name  收入记录名称

price          收入金额

cat_id        收入分类编号

mw_date   收入记录日期

kh_id         客户编号

cw_tag      收入标签,用于标记记录是否作废

 

cw.php里面 我们创建Cw类 通过这个类来操作sql 彻底告别在php代码中混入sql的混乱状态!!!

 

use Illuminate\Database\Eloquent\Model as mywebphpORM;

class Cw extends mywebphpORM {

      public $timestamps = false;
     //如果table之前设置了前缀 可以直接写 cw
      protected $table = 'ecs_cw';
      //如果主键不是id 可以单独指定
      //protected $primaryKey = 'cw_id';


}

 

说说最常见的CRUD操作

 

//增加

if($_REQUEST['act'] == 'add'){

    $cw_name  = trim($_POST['cw_name']);
    $price    = trim($_POST['price']);
    $cat_id    = intval($_POST['cat_id']);
    $mw_date   = trim($_POST['mw_date']);
    $mw_date   = strtotime($mw_date);

    $kh_id     = intval($_POST['kh_id']);


    $cw = new Cw();

    $cw->cw_name = $cw_name;
    $cw->price   = $price;
    $cw->cat_id  = $cat_id;
    $cw->mw_date = $mw_date;
    $cw->kh_id   = $kh_id;

    $cw->save();


    $id = $cw->id;

    if($id > 0){

        $info = '添加成功!';
    }else{

        $info = '添加失败!';
    }

  //模板赋值
    $smarty->assign('info',$info);
    $smarty->display('wyzx/cw_info.htm');


}

 

//编辑修改

 

elseif($_REQUEST['act'] == 'edit'){

    $id = intval($_GET['id']);



    $row = Cw::find($id);

    $row['cat_name'] = mw_get_cat_name($row['cat_id']);
    $row['mw_date_s'] = date('Y-m-d',$row['mw_date']);

    $row['kh'] = Cw::find($id)->kh;
    $kh_list = Kh::all();

    $smarty->assign('cat_list' ,mw_cat_list());
    $smarty->assign('kh_list',$kh_list);
    $smarty->assign('row',$row);
    $smarty->display('wyzx/cw_edit.htm');
}

 

编辑确认

elseif($_REQUEST['act'] =='edit_insert'){

    //把$_POST 专成变量
    extract($_POST);
    $mw_date = strtotime($mw_date);
    $row = Cw::find($id);

    $row->cw_name = $cw_name;
    $row->price   = $price;
    $row->cat_id  = $cat_id;
    $row->mw_date = $mw_date;
    $row->kh_id   = $kh_id;
    $row->cw_tag  = $cw_tag;
    if($row->save()){

        $info = '编辑成功!';
    }
    else{

        $info = '修改失败!';
    }

    $smarty->assign('info' ,$info);

    $smarty->display('wyzx/cw_info.htm');


}

 

删除

 

elseif($_REQUEST['act'] == 'del'){

    $id = intval($_GET['id']);


    $cw = Cw::find($id);


    if($cw->delete()){

        $info = '成功删除!';
    }
    else{

        $info = '删除失败!';
    }

    $smarty->assign('info' ,$info);
    $smarty->display('wyzx/cw_info.htm');
}

 

其他的更多orm操作可以参考 Eloquent手册

 

附件里面包含了Eloquent组件 单独下载包

 

http://laravel.com/docs/eloquent

 

 

 

 

2
0
分享到:
评论
3 楼 370517704 2014-04-21  
关联模型你是怎么处理的? 我测试之后发现hasOne 方法好像没法调用
2 楼 拜月小刀 2014-01-26  
uuleaf 写道
ecshop 已死,远离之

1 楼 uuleaf 2014-01-26  
ecshop 已死,远离之

相关推荐

    ECshop二次开发资料

    ECShop是一款基于PHP语言和MySQL数据库的开源电子商务系统,它以其强大的功能、良好的用户体验和易于扩展性受到了广大电商用户的喜爱。对于初次接触ECShop或希望进行二...祝你在ECShop的二次开发旅程中取得丰硕的成果!

    ECSHOP二次开发教程开发手册

    在二次开发过程中,开发者需要注意安全问题,如SQL注入、XSS攻击等。ECSHOP内置了一些安全防护机制,但还需要开发者根据实际需求加强。同时,性能优化也是关键,包括数据库查询优化、缓存策略调整、页面静态化等,以...

    ecshop模板开发,ecshop模板二次开发

    在进行ECShop模板开发时,尤其是模板二次开发,理解其模板系统的核心特性和操作方式是至关重要的。 **1. 模板系统介绍** ECShop的模板系统是为了满足商家自定义店铺外观的需求而设计的。它允许开发者通过修改HTML、...

    ecshop二次开发教程

    使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2C站点都选择了使用ECShop网上商店系 统,但是有时候我们需要做一些ecshop本来没有的功能或者前端展示,这时候就需要我们自己去进行...

    ecshop二次开发视频教程第三讲

    - 在开发过程中,应该遵循良好的编码习惯,比如使用注释说明修改目的和实现方式,方便后期维护。 #### 四、总结 通过本次视频教程的学习,我们了解了如何在Ecshop中实现商品价格的格式化显示。这不仅提升了网站的...

    ecshop二次开发 47个经典插件开发案例 ecshop

    三十二、二次开发技术共享 后台邮件群发共享 100 三十三、ecshop内页调用友情链接 100 三十四、项目要求在后台商品分类添加图片的功能。 102 三十五、分类按照拼音第一字母排序显示实现 102 三十六、获取分类的一级...

    ECSHOP二次开发视频

    6. **安全性**:ECSHOP二次开发中,安全是个重要的话题。视频可能讲解如何防止SQL注入、XSS攻击等常见的网络安全问题,以及如何设置合理的权限和验证机制。 7. **性能优化**:学习如何优化ECSHOP的性能,包括缓存...

    ecshop 二次开发手册

    在ECShop的二次开发过程中,你需要掌握以下几个核心知识点: 1. **环境搭建**:首先,你需要熟悉Linux或Windows服务器环境,包括PHP、MySQL数据库以及Apache或Nginx等Web服务器的配置与管理。 2. **PHP编程基础**...

    ( ECshop二次开发-新手入门

    作为新手,初次接触ECShop的二次开发需要了解以下关键知识点: 1. **PHP基础**:ECShop是用PHP编写的,因此熟悉PHP语法是必要的。包括变量、数据类型、流程控制、函数、类与对象等基础知识,这些都是进行ECShop二次...

    项目实战Ecshop商城系统二次开发(共30天更新完毕

    ### 项目实战Ecshop商城系统二次开发知识点梳理 #### 一、Ecshop系统概述与环境搭建 **知识点:** - **Ecshop系统介绍:** Ecshop是一款基于PHP语言的开源网上商店系统,拥有丰富的功能模块,支持多语言、多货币等...

    仿苏宁易购二次开发ecshop

    9. **版本控制**:在开发过程中,使用Git进行版本控制,便于团队协作和代码回溯,保证项目有序进行。 10. **测试**:为了确保功能的稳定性和正确性,开发者可能进行了单元测试、集成测试和压力测试,确保在各种环境...

    ecshop最全二次开发文档

    《ECSHOP最全二次开发文档》是一个全面介绍ECSHOP电商平台二次开发的资料集,涵盖了多个关键领域的知识和技术。以下是对这些文件内容的详细解析: 1. **ECSHOP标签集合之六脉神剑.doc**:这份文档详细讲解了ECSHOP...

    ECSHOP二次开发文档

    **ECSHOP二次开发文档** ECSHOP是一款基于PHP语言和MySQL数据库的开源电子商务系统,被广泛应用于各类电商网站的建设。本文档主要针对ECSHOP的二次开发进行详细阐述,旨在帮助开发者更好地理解和操作这个平台,实现...

    ECshop二次开发

    下面,我们将根据给定的文件内容,详细解析ECshop二次开发中的一些常见操作及知识点。 ### 1. 修改网站欢迎语 ECshop的欢迎语可以通过编辑`languages\zh_cn\common.php`文件中的`$_LANG['welcome']`变量来实现。...

    [南大科技]Ecshop二次开发视频

    教程名称:[南大科技]Ecshop二次开发视频课程目录:【】1 Ecshop入门【】2~4部分 实战到精通【】5[更新]Smarty【】6 [更新]微信公众号和ectouch【】07 [更新]Ecshop基本操作【】08 [更新]ecshop使用手册【】09 [更新...

    ecshop开发学习资料(ecshop模板制作 ecshop数据库说明)

    “ecshop函数列表”通常包含ECSHOP系统中可用的所有函数及其参数,这对于开发者来说是一份重要的参考指南,帮助他们在编程过程中快速查找和使用合适的功能。 在压缩包内的文件中: 1. “ecshop数据库结构.doc”...

    ecshop二次开发必备资料

    标题中的“ecshop二次开发必备资料”表明了这个压缩包主要包含了有关ECSHOP电子商务平台的二次开发所需的关键信息。ECSHOP是一个开源的网上商城系统,二次开发通常涉及对系统的定制化,以满足特定业务需求或优化用户...

    ECShop二次开发思想

    ### ECShop二次开发思想 #### 一、ECShop模板基础概览 ECShop是一款非常流行的开源电子商务系统,它不仅提供了丰富的功能,还支持强大的二次开发能力。本文将深入探讨ECShop模板的基础概念及其修改方法,旨在帮助...

    ecshop开发教程大全

    在进行二次开发时,需要注意遵循ECShop的开发规范,确保代码的质量和系统的稳定性。 三、数据库结构 ECShop的数据库设计涵盖了商品、订单、用户、分类等多个核心模块。开发者需要熟悉每个表的字段含义和关系,例如...

Global site tag (gtag.js) - Google Analytics