YII进行数据增删改查分析
关于模型部分參考http://blog.csdn.net/buyingfei8888/article/details/40208729
控制器部分:
<?php
class GoodsController extends Controller{
function actionShow(){
$goods_model = Goods::model(); //简单查询能够通过模型里面静态方法来创建
$sql = "select goods_id,goods_name,goods_price,goods_create_time from {{goods}} limit 10";
$goods_infos = $goods_model ->findAllBySql($sql);//通过原生态sql进行查询。findALlBySql返回一个对象数组,
// var_dump($goods_infos);
// foreach($goods_infos as $v){
// echo $v ->goods_name ."<br />";
// }
// exit();
$this->render('show',array("goods_infos"=>$goods_infos)); //这样的方式会渲染布局
//$this->renderPartial('add',array('goods_model' => $goods_model)); //这样的方式不会渲染布局
} function actionAdd(){
$goods_model = new Goods();
if(isset($_POST['Goods'])){
// $goods_model->goods_name = 'apple phone';
// $goods_model->goods_price = '5199';
// $goods_model->goods_weight=102;
//对上面代码优化
foreach($_POST['Goods'] as $_k => $_v){
$goods_model -> $_k = $_v;
}
}
if($goods_model->save()){
$this ->redirect('./index.php?r=houtai/goods/show');
}else{
echo "error";
}
// $this->renderPartial('add',array('goods_model' => $goods_model));
} /*
* YII 对get优化,作为參数传递进来
* 模板和加入时模板基本一样。直接复制略微改动即可。都是通过小物件 ,自己主动会把数据关联起来,节省开发成本
*/
function actionUpdate($id){
//除了加入数据进行 new Goods()。 别的都是调用静态方法 调用save方法运行是insert
// Goods::model()调用save方法运行是update
$goods_model = Goods::model();
$goods_info = $goods_model ->findByPk($id); //$goods_info 是 数据模型对象
if(isset($_POST['Goods'])){
foreach($_POST['Goods'] as $_k => $_v){
$goods_info -> $_k = $_v;
} if($goods_info -> save()){
$this ->redirect('./index.php?r=houtai/goods/show');
}
}
$this->renderPartial('update',array('goods_model' => $goods_info ));
}
function actionDel($id){
//依据$id获得被删除数据对象。通过该对象调用delete方法就ok
$goods_mode = Goods::model();
$goods_info = $goods_mode ->findByPk($id); //获得被删除商品模型对象
if($goods_info ->delete() ){
$this ->redirect('./index.php?r=houtai/goods/show');
}else{
echo 'error';
} }
function actionJia(){
$goods_model = new Goods();
// $goods_model=Goods::model();
$goods_model->goods_name = 'apple phone';
$goods_model->goods_price = '5199';
$goods_model->goods_weight=102;
var_dump($goods_model->save());
// var_dump($goods_model);
if($goods_model->save()){
echo 'success';
}else{
echo "error";
} }
}
?>
通过这个url(http://localhost/shop/index.php?r=houtai/goods/show)show视图:
部分源代码:
<table class="table_a" border="1" width="100%">
<tbody><tr style="font-weight: bold;">
<td>序号</td>
<td>商品名称</td>
<td>库存</td>
<td>价格</td>
<td>图片</td>
<td>缩略图</td>
<td>品牌</td>
<td>创建时间</td>
<td align="center">操作</td>
</tr>
<?php
$i=1;
foreach($goods_infos as $_v){
?>
<tr id="product1">
<td><?php echo $i++;? ></td>
<td><a href="#">苹果(APPLE)iPhone 4S<? php echo $_v->goods_name;?></a></td>
<td><?php echo $_v->goods_number;?></td>
<td><? php echo $_v->goods_price ;?></td>
<td><img src="<?PHP ECHO HOUTAI_IMG_URL ;?><?php echo $_v->goods_big_img;? >" height="60" width="60"></td>
<td><img src="<?PHP ECHO HOUTAI_IMG_URL ;?><?php echo $_v->goods_small_img;? >" height="40" width="40"></td>
<td><?php echo $_v->goods_brand_id;? ></td>
<td><?php echo $_v->goods_create_time;? ></td>
<td><a href="./index.php?r=houtai/goods/update&id=<?php echo $_v->goods_id;?>">改动</a></td>
<!-- <td><a href="./index.php?r=houtai/goods/update&id=<? php// echo $_v->goods_id;?>&name=test">改动</a></td>-->
<td><a href="./index.php?r=houtai/goods/del&id=<? php echo $_v->goods_id;? > "> 删除</a></td>
</tr>
<? php }
? > <tr>
<td colspan="20" style="text-align: center;">
[1]
</td>
</tr>
</tbody>
</table>
add模板部分源代码:
<? php $form = $this -> beginWidget("CActiveForm");?>
<!-- 调用了 CActiveForm 类
如何查找CActiveForm类。在\framework\yiilite.php 里查找,这个文件10000多行。可见yii核心代码就是这么多行
通过这个在找到 CActiveForm所在文件 CActiveForm.php包括了非常多方法。 就是对表单元素操作
-->
<table border="1" width="100%" class="table_a">
<tr>
<!-- <td>商品名称</td>-->
<!-- <td><input type="text" name="f_goods_name" /></td>-->
<td><? php echo $form->labelEx($goods_model,'goods_name');? ></td>
<td><?php echo $form -> textField($goods_model,'goods_name');? ></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_weight');? ></td>
<td> <?php echo $form -> textField($goods_model,'goods_weight');?></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_price');?></td>
<td> <?php echo $form -> textField($goods_model,'goods_price');?></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_number');?></td>
<td> <?php echo $form -> textField($goods_model,'goods_number');?></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_category_id');?></td>
<td> <? php echo $form -> textField($goods_model,'goods_category_id');? ></td>
</tr>
<tr> <td><? php echo $form->labelEx($goods_model,'goods_brand_id');? ></td>
<td><? php echo $form -> textField($goods_model,'goods_brand_id');? ></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_introduce');?></td>
<td><?php echo $form -> textArea($goods_model,'goods_introduce',array('cols' => 20,"rows" => 5));?></td>
</tr>
</table>
<td colspan="2" align="center">
<input type="submit" value="加入">
</td>
<?php $this->endWidget();?>
改动和上面基本同样:
<?php $form = $this -> beginWidget("CActiveForm");? >
<!-- 调用了 CActiveForm 类
如何查找CActiveForm类。在\framework\yiilite.php 里查找,这个文件10000多行,可见yii核心代码就是这么多行
通过这个在找到 CActiveForm所在文件 CActiveForm.php包括了非常多方法。就是对表单元素操作
-->
<table border="1" width="100%" class="table_a">
<tr>
<!-- <td>商品名称</td>-->
<!-- <td><input type="text" name="f_goods_name" /></td>-->
<td><?php echo $form->labelEx($goods_model,'goods_name');?></td>
<td><? php echo $form -> textField($goods_model,'goods_name');?></td>
</tr>
<tr> <td><? php echo $form->labelEx($goods_model,'goods_weight');? ></td>
<td> <?php echo $form -> textField($goods_model,'goods_weight');?></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_price');?></td>
<td> <? php echo $form -> textField($goods_model,'goods_price');? ></td>
</tr>
<tr> <td><? php echo $form->labelEx($goods_model,'goods_number');?></td>
<td> <?php echo $form -> textField($goods_model,'goods_number');?></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_category_id');?></td>
<td> <?php echo $form -> textField($goods_model,'goods_category_id');?></td>
</tr>
<tr> <td><?php echo $form->labelEx($goods_model,'goods_brand_id');?></td>
<td><?php echo $form -> textField($goods_model,'goods_brand_id');?></td>
</tr>
<tr> <td><? php echo $form->labelEx($goods_model,'goods_introduce');?></td>
<td><? php echo $form -> textArea($goods_model,'goods_introduce',array('cols' => 20,"rows" => 5));?></td>
</tr>
</table>
<td colspan="2" align="center">
<input type="submit" value="改动">
</td>
<?php $this->endWidget();? >
关于为什么Goods::model()和new Goods() 运行save方法会分别调用update 和insert方法能够看CActiveRecord 源代码。
YII进行数据增删改查分析的更多相关文章
- salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的标签相对简单,如果需要深入了解VF相关知识以及标签, 可以通过以下链接查看或下载 ...
- C#操作Excel数据增删改查(转)
C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...
- C#操作Excel数据增删改查示例
Excel数据增删改查我们可以使用c#进行操作,首先创建ExcelDB.xlsx文件,并添加两张工作表,接下按照下面的操作步骤即可 C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文 ...
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...
- 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子
备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...
- MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)
设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...
- IDEA搭建SSM实现登录、注册,数据增删改查功能
本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...
- C#在winform中操作数据库,实现数据增删改查
1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本 ...
随机推荐
- 开发中关于Git那些事
如果你想精通Git,直接到 Git官网 把这本ProGit掌握已足以Pro Git 此文主要介绍一切开发中常用的git命令和一些配置技巧(诸如git别名配置,log打印技巧,版本回退以及分支管理等). ...
- linux-mkdir
mkdir mkdir : 可以用来创建目录,如果不加创建路径即在本路径下创建一个新的指定的目录,否则即在给出的路径下创建目录. 目录创建:目录名尽量见名知意,根据不同需要分层创建,尽量避免在同一目录 ...
- [html5] 初识绘图canvas
这个星期被调到别的项目组专门做了一会儿前端,没办法,人太少,我也只能硬着头皮上... 说起来,html5的canvas真的好用,可以画色块,可以嵌入图片,可以通过定位在图片上写字等等 举例如下 在ht ...
- 全国DNS服务器地址(部分)
广东: 广东省广州市(中国电信) 首选DNS:61.144.56.100 备份DNS:61.144.56.101 广东省广州市越秀区(中国电信) 首选DNS:202.96.128.86 备份DNS:2 ...
- win10出现"本地计算机上的MySQL57服务启动后停止"
在window10下mysql57出现"本地计算机上的MySQL57服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止"错误 环境:win10.MySQL Communi ...
- 深入理解java虚拟机_第二章_读书笔记
1.本章内容目录: 概述 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 ...
- 教你五步制作精美的HTML时钟
学了一段时间的HTML.CSS和JS后,给大家做一款漂亮的不像实力派的HTML时钟,先看图:涉及到的知识点有: CSS3动画.DOM操作.定时器.圆点坐标的计算(好多人是不是已经还给自己的老师了~) ...
- Servlet编程实例1
编程目的:使用JSP+servlet,来实现一个登陆页面,登陆成功则提示成功,登陆失败则提示失败. 编程要求:登陆页面由login.jsp负责显示,登陆成功由success.jsp负责显示,登陆失败由 ...
- R语言高性能编程(二)
接着上一篇 一.减少内存使用的简单方法1.重用对象而不多占用内存 y <- x 是指新变量y指向包含X的那个内存块,只有当y被修改时才会复制到新的内存块,一般来说只要向量没有被其他对象引用,就可 ...
- [转载] Mahout
转载自http://hadoop.readthedocs.org/en/latest/Hadoop-Mahout.html# Mahout 12.1 简介 Mahout为推荐引擎提供了一些可扩展的机器 ...