文档章节

YII模型的增删改查

别人说我名字很长
 别人说我名字很长
发布于 2013/12/21 09:27
字数 1082
阅读 112
收藏 2


新建模型 ,模型名为表名
1、建模型 /cms/protected/models/test.php //test是我的表名

<?php
/*
 * test表模型管理,一张表对应一个模型,表中的字段为模型对象的属性
 */
class test extends CActiveRecord{
    //Model静态方法为必须有的方法
    public static function model($className=__CLASS__){
          return parent::model($className);
    }
    //tableName方法也是必须有的方法
    public function tableName(){
        return '{{test}}';
    }
    //attributeLabels方法在显示 echo $form->labelEx($model,'pingpai'); 时需要
    public function attributeLabels(){
        return array(
            'title' =>'商品名称',
            'type'=>'商品类型',
            'pingpai'=>'品牌',
            'jiage'=>'价格',
            'picname'=>'产品图片',
            'content'=>'详细描述'
        );        
    } 
    //验证
    function rules() {
        return array(
            array('title','required','message'=>'标题必填'),
            array('typeid','required','message'=>'必须选择栏目'),            
        );
    }   
}
?>



2、增加  (首先建立class  Manager Controller extends Controller控制器的add方法)
public function actionAdd(){
        //首页实例化这个模型
        $model = new test();
        //如果表单提交了,就进行更新
        if($_POST['test']){
            foreach($_POST['test'] as $k=>$v){
                $model->$k = $v;//将post过来的数据赋值给模型字段
            }
            $model->attributes=$_POST['test'];//使用这个也可以
            //保存信息
            if($model->save()){
                //增加成功后跳转
                $this -> redirect(array('show'));
            }            
        }
        //显示增加的表单,将$model传进去
        $this->renderPartial('add',array('model'=>$model));
    }



2—1、增加的视图 /cms/protected/modules/houtai/manager/add.php
<?php $form = $this->beginWidget('CActiveForm');?><!-- 表单form开始 -->
<table border="1" width="100%" class="table_a">
    <tr>
        <td><?php echo $form->labelEx($model,'title'); ?><!-- 字段的显示名称 --></td>
        <td>
            <?php echo $form->textfield($model,'title');?><!-- 字段的input框 -->
        </td>
    </tr>
    <tr>
        <td><?php echo $form->labelEx($model,'content');?><!-- 字段的显示名称 --></td>
        <td>
            <?php echo $form->textArea($model,'content');?><!-- 字段的area框 -->
        </td>
    </tr>
           
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="添加">
        </td>
    </tr>  
</table>
<?php $this->endwidget();?><!-- 表单form结束 -->


3、修改   (首先建立class  Manager Controller extends Controller控制器的update方法)
public function actionUpdate($id){//id为接收修改的ID
        $model = Test::Model();//实例化模型,修改的模型必须这样实例化
        $test_info= $model->findByPk($id);//查询出要修改的这一列
        //如果提交了表单
        if($_POST['test']){
            foreach($_POST['test'] as $k=>$v){
                $test_info->$k = $v;//将post过来的数据赋值给模型字段
            }
            if($test_info->save()){//保存信息
                $this->redirect(array('show'));//跳转
            }            
        }
        //将模型对象传入到update视图中
        $this->renderPartial('update',array("test_info"=>$test_info));        
    }



3_1 修改的视图  增加的视图 /cms/protected/modules/houtai/manager/update.php
<?php $form = $this->beginWidget('CActiveForm');?><!-- 表单form开始 -->
<table border="1" width="100%" class="table_a">
    <tr>
        <td><?php echo $form->labelEx($model,'title'); ?><!-- 字段的显示名称 --></td>
        <td>
            <?php echo $form->textfield($model,'title');?><!-- 字段的input框 -->
        </td>
    </tr>
    <tr>
        <td><?php echo $form->labelEx($model,'content');?><!-- 字段的显示名称 --></td>
        <td>
            <?php echo $form->textArea($model,'content');?><!-- 字段的area框 -->
        </td>
    </tr>
          
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="修改">
        </td>
    </tr>  
</table>
<?php $this->endwidget();?><!-- 表单form结束 -->



4、删除  (首先建立class  Manager Controller extends Controller控制器的delete方法)
public function actionDelete($id){
        //根据get过来的id获得模型对象,通过对象的delete方法删除数据
        $model = Test::Model();//获得模型对象
        $test_info = $model->findByPk($id);//通过对象的findByPk方法获得这一行数据
        if($test_info->delete()){//用delete方法删除
            $this->redirect(array('show'));
        }
    }



5、分页显示    (首先建立class  Manager Controller extends Controller控制器的show方法)
public function actionshow(){
        $model = Test::Model();//查、改、删都用这个实例化模型方式,增加必须用new Test();
        $con = $model->count();//获得总记录数
        $per = 5;//每页显示5条记录
        $page = new pagination($con,$per);//这里的分页类pagination是调用的/cms/protected/components/pagination.php
        $sql = "select * from {{test}} $page->limit";//拼接SQL语句
        $test_info = $model->findAllBySql($sql);//通过SQL语句获得数据
        $this->renderPartial('show',array('test_info'=>$test_info,'fpage'=>$page->fpage()));//传递变量到视图
    }



5-2 分页的视图  /cms/protected/modules/houtai/views/manager/show.php
<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
                    foreach($test_info as $k=>$v){
                    ?>
                    <tr id="product1">
                        <td><?php echo $v->id;?></td>
                        <td><a href="#"><?php echo $v->title;?></a></td>
                        <td>100</td>
                        <td><?php echo $v->jiage;?></td>
                        <td><img src="<?php echo HOUTAI_IMG_URL;?>20121018-174034-58977.jpg" height="60" width="60"></td>
                        <td><img src="<?php echo HOUTAI_IMG_URL;?>20121018-174034-97960.jpg" height="40" width="40"></td>
                        <td>苹果apple</td>
                        <td>2012-10-18 17:40:34</td>
                        <td><a href="index.php?r=houtai/manager/update&id=<?php echo $v->id;?>">修改</a></td>
                        <td><a href="index.php?r=houtai/manager/delete&id=<?php echo $v->id;?>" onclick="return confirm('确定将此记录删除?')">删除</a></td>
                    </tr>
                    <?php }?>
                        
                    <tr>
                        <td colspan="20" style="text-align: center;">
                            <?php echo $fpage;?>
                        </td>
                    </tr>
                </tbody>
            </table>






© 著作权归作者所有

共有 人打赏支持
上一篇: golang安装
下一篇: YII视图与布局
别人说我名字很长
粉丝 56
博文 258
码字总数 108335
作品 0
济南
程序员
私信 提问
通用管理后台--YiiBoot

YiiBoot使用Yii2 + AdminLTE + mysql,开发高效的通用管理后台;采用代码生成器,以AminLTE为样式模板,生成数据库表的数据模型model、增删改查的视图view和控制器controller,菜单配置后直接...

penngo
2016/10/20
5.3K
1
THINKPHP框架有没有像YII的GII功能

后台管理最基础的CURD(增删改查),能不能像YII框架那个GII组件一样的功能,自动生成!那真是感谢了,YII2学的好累啊!

水人
2015/02/09
1K
5
tongbobo/fecshop

项目状态123: 正式版本已经出来,后台(appadmin)和pc端(appfront),wap端(apphtml5)已经完成,完成了一些基本的api。 1、Fecshop介绍 Fecshop 全称为Fancy ECommerce Shop,是基于php...

tongbobo
2017/08/09
0
0
开源电商系统--Fecshop

Fecshop 全称为 Fancy ECommerce Shop,是基于 PHP Yii2 框架开发的一款优秀的开源电商系统,遵循 BSD-3-Clause 协议,Fecshop 支持多语言,多货币,架构上支持 PC,手机 Web,手机 APP,和 ...

FecShop
2017/05/22
15.5K
19
微信管理项目开发(Vue+Webpack)

需要1名满足本需求所述的能力要求的前端开发工程师驻场开发。 【工作职责】 1、负责微信后台系统前端整体开发 2、 后台 (后台登录) - 后台首页 - 数据概览 (微信数据, 用户数据, 基础数据) -...

callmez
2016/04/06
12
1

没有更多内容

加载失败,请刷新页面

加载更多

mosquitto 集群搭建

在Mosquitto集群中,客户端可以在任何节点上订阅主题,也可以在任何节点上发布消息,集群会保证消息按需转发到正确的节点。 为了均衡负载及避免单点故障,Mosquitto集群实现为完全去中心化、...

yanlijun_java
23分钟前
5
0
阿里高级技术专家:研发效能的追求永无止境

背景 大约在5年前,也就是2013年我刚加入阿里的时候,那个时候 DevOps 的风刚吹起来没多久,有家公司宣称能够一天发布几十上百次,这意味着相比传统软件公司几周一次的发布来说,他们响应商业...

阿里云云栖社区
27分钟前
1
0
正则匹配demo

要求:密码中有大写字母,小写字母,以及数字 package com.example.demo;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author seif * @Description: ...

经常把天聊死的胖子
28分钟前
5
0
阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算

日前,阿里巴巴正式对外发布了分布式科学计算引擎 Mars 的开源代码地址,开发者们可以在pypi上自主下载安装,或在Github上获取源代码并参与开发。 此前,早在2018年9月的杭州云栖大会上,阿里...

阿里云官方博客
28分钟前
3
0
在 Kubernetes 中配置私有 DNS 和上游域名服务器

Before you begin You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a clust......

xiaomin0322
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部