文档章节

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视图与布局
别人说我名字很长
粉丝 55
博文 255
码字总数 105359
作品 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
yii2项目实战-用户管理之user组件的配置

作者:白狼 出处:http://www.manks.top/document/yii2-user-config.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律...

白狼栈
2016/08/22
20
0

没有更多内容

加载失败,请刷新页面

加载更多

可自定义扩展底部列表对话框ListBottomSheetDialogFragment

因为需要,为了方便,构建了一个可以自定义扩展的底部列表对话框,可以应付大部分场景。 效果图如下: 1.默认实现: 2.自定义列表实现 3.自定义头部和列表实现 一.可实现功能 1.默认可实现通...

明月春秋
28分钟前
1
0
数据库---增删改查

增:insert into 表名(列名1,列名2) values(‘列值1’,‘列值2’) 多行数据处理:insert into 表名(列名1,列名2) select ‘列值1’,‘列值2’ union select ‘列值1.1’,‘列值2.2...

森林之下
29分钟前
2
0
分布式/集群下session共享方案汇总

除去那些对容器依赖特别高的方案(如: 基于Tomcat的memcached-session-manager / tomcat-redis-session-manager,基于Jetty的jetty-nosql-memcache / jetty-session-redis ),自己整理了下...

哥本哈根的小哥
55分钟前
2
0
Vue中的缩写:v-bind、v-on

v-bind 缩写:: 预期:any (with argument) | Object (without argument) 参数:attrOrProp (optional) 修饰符: .prop - 被用于绑定 DOM 属性。 .camel - (2.1.0+) 将 kebab-case 特性名转换......

文文1
今天
2
0
epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部