用YII创建表的时候出现没主键的表,你可以在AR primaryKey()函数里手工声明主键 。
主键:CActiveRecord::model($modelClass)->tableSchema->primaryKey; 库名:CActiveRecord::model($modelClass)->tableSchema->schemaName; 表名:CActiveRecord::model($modelClass)->tableSchema->name;
保存后得到主键值
Yii::app()->db->getLastInsertID(); $model->save(); $model->id;
为什么用外部Action,可以提高业务的重用性 。如DeleteAction可以同时处理post,user,...删除。
制器通常有一个默认的动作。当用户的请求未指定要执行的动作时,默认动作将被执行。默认情况下,默认的动作名为index,
它可以通过设置 CController::defaultAction 修改。
public $defaultAction='index';
1.创建DeleteAction.php在protected/actions目录下,用于删除一条记录
<?php class DeleteAction extends CAction { public $pk = 'id'; public $redirectTo = array('index'); public $modelClass; function run() { $pk = Yii::app()->request->getParam($this->pk); if (empty($pk)) throw new CHttpException(404); $model = CActiveRecord::model($this->modelClass)->findByPk($pk); if (!$model) throw new CHttpException(404); if ($model->delete()) { $this->getController()->redirect($this->redirectTo); } throw new CHttpException(500); } }
创建ViewAction.php在protected/actions目录下, 用于显示一条明细
<?php class ViewAction extends CAction{ public $param = 'id'; public $renderTo = 'view'; public $modelClass; function run(){ $pk = Yii::app()->request->getParam($this->param); if(empty($pk)) throw new CHttpException(404); $model = CActiveRecord::model($this->modelClass)->findByPk($pk); if(!$model) throw new CHttpException(404); $this->getController()->render($this->renderTo, array('model'=>$model)); } }
创建UpdateAction.php在protected/actions目录下, 用于修改一条明细
<?php class UpdateAction extends CAction { public $param = 'id'; public $renderTo = 'update'; public $successRedirect = 'view'; public $updateArr = []; public $modelClass; function run() { $pk = Yii::app()->request->getParam($this->param); if (empty($pk)) throw new CHttpException(404); $model = CActiveRecord::model($this->modelClass)->findByPk($pk); if (!$model) throw new CHttpException(404); $model->scenario = 'update'; if (!empty($this->updateArr)) { $model->attributes = $this->updateArr; } if (isset($_POST[$this->modelClass])) { $model->attributes = $_POST[$this->modelClass]; if ($model->save()) $this->getController()->redirect(array($this->successRedirect, 'id' => $model->{$model->tableSchema->primaryKey})); } $this->getController()->render($this->renderTo, array('model' => $model)); } }
创建CreateAction.php在protected/actions目录下, 用于新增一条记录
<?php class CreateAction extends CAction{ public $renderTo = 'create'; public $successRedirect = 'view'; public $modelClass; function run(){ $model = new $this->modelClass; $model->scenario = 'new'; if(isset($_POST[$this->modelClass])) { $model->attributes=$_POST[$this->modelClass]; if($model->save()) $this->getController()->redirect( array($this->successRedirect, 'id'=>$model->{$model->tableSchema->primaryKey}) ); } $this->getController()->render($this->renderTo, array('model'=>$model)); } }
创建ListAction.php在protected/actions目录下,用于查询列表管理
<?php class ListAction extends CAction { public $renderTo = 'list'; public $modelClass; public $renderArr = array(); public $searchArr = array(); function run() { $model = new $this->modelClass('search'); $model->unsetAttributes(); // clear any default values #查询初始化条件 if (!empty($this->searchArr)) { $model->attributes = $this->searchArr; } if (isset($_REQUEST[$this->modelClass])) { //点击搜索按钮后的查询条件 $model->attributes = $_REQUEST[$this->modelClass]; array_map("trim", $model->attributes); } $params = array_merge(['model' => $model], $this->paramsArr); $this->getController()->render($this->renderTo, $params); } }
2.PostController.php
<?php class PostController extends Controller { function actions(){ return array( 'create' => array( 'class' => 'application.actions.CreateAction', 'modelClass' => 'Post', ), 'view' => array( 'class' => 'application.actions.ViewAction', 'param' => 'Postid', //getParam('param'); 'modelClass' => 'Post', ), 'update' => array( 'class' => 'application.actions.UpdateAction', 'modelClass' => 'Post', ), 'delete' => array( 'class' => 'application.actions.DeleteAction', 'modelClass' => 'Post', ), 'index' => array( 'class' => 'application.actions.ListAction', 'modelClass' => 'Post', ), ); } }
其中class是DeleteAction的路径,pk主键(默认id,可以不写),只需要修改actions,其他的model就可以共用DeleteAction.php,访问时
index.php?r=post/remove?Post_id=1
修改系统gii的Crud Generator模板,可以快速的构建项目 http://hudeyong926.iteye.com/blog/1273561
相关推荐
本文实例讲述了yii的CURD操作技巧。分享给大家供大家参考。具体分析如下: CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。它代表创建(Create)、更新(Update)、读取(Retrieve)...
"yii2 通用后台系统"是一个基于Yii2框架构建的企业级后台管理系统,旨在提供一套全面、高效的后台管理解决方案,包括用户管理、权限控制、数据统计等功能,帮助开发者快速搭建稳定且功能丰富的后台应用。 在Yii2...
"一键安装"是指通过简单的步骤快速完成应用的部署,这在Yii2的企业通用管理后台中体现为提供预配置的安装脚本或工具,使得开发者无需手动配置每个细节,大大缩短了项目启动时间。快速部署则强调了系统的易用性和可...
"yii刷单平台.zip"中包含的项目是一个基于Yii框架构建的刷单交易任务平台源码,用于学习和交流目的。在这个平台中,我们可以深入理解Yii框架的核心特性以及如何在实际项目中运用它。 1. Yii框架简介: Yii,发音...
1. Action定义:在Yii中,Action通常以方法的形式存在,方法名以单词"action"开头。开发者还可以定义Action类,这种方式能实现Action的重用。 2. URL解析:Yii的URL解析严格区分大小写,因此,开发者在设置路由时...
Active Record允许开发者直接与数据库中的表进行交互,通过对象化的操作方式大大简化了数据操作。另外,Yii还提供了CDbConnection和CDbCommand类来支持更底层的SQL操作。 路由管理是Yii框架的重要特性,它决定了URL...
Yii框架是一款高效的PHP开发框架,特别适合用于构建大型企业级Web应用。它的名称"Yii"取自中文“易”字,寓意简洁、易用。Yii框架以性能优化为设计核心,提供了一系列现代化的Web开发工具和技术,使得开发者可以快速...
- **描述**: "Yii权威指南(非常适合新手入门),想要学习yii的童鞋快点下载吧!绝对能够快速学习" **解释**: 本指南旨在帮助初学者快速掌握Yii框架的基础知识与应用技巧,特别适合于没有或仅有少量Yii经验的学习者。...
基于Yii2+Vue2.0+uniapp 前沿技术研发,易学易用,前后端分离,多端开发,负载均衡,性能优越架构稳定;商城商品、订单、用户精细化管理;涵盖秒杀、消费奖励、超级海报等20+营销插件;H5+小程序+公众号+PC,全渠道...
Yii 是一个通用 Web 编程框架,能够开发任何类型的 Web 应用。它是轻量级的,又装配了很好很强大的缓存组件,因此尤其适合开发大流量的应用,比如门户、论坛、内容管理系统(CMS)、电子商务系统,等等。 Yii 和其它...
标题提到的"Yii 2文件下载"可能指的是Yii 2.0框架的安装包或者相关的扩展或示例代码。 在描述中,我们看到“找了好久才找到的Yii2.0”,这可能暗示了Yii 2.0的相关资源并不总是容易找到,尤其对于初学者来说,可能...
在`safeUp()`方法中,可以使用Yii 2提供的数据库操作API来创建数据表,并定义字段。例如: ```php public function safeUp() { $tableOptions = null; if ($this->db->driverName === 'mysql') { // 设置表为...
1. **Yii2框架与Swoole的集成**:Yii2swoole是将Yii2框架与Swoole进行整合的扩展,允许Yii2应用利用Swoole的高性能特性。它提供了在Swoole环境下运行Yii2的基础设施,包括请求处理、事件监听、session和cookie管理等...
Yii框架是一款高效的、基于组件的PHP开发框架,用于...总之,Yii框架中文手册教程和YII模板资源是学习和开发Yii应用的宝贵资料。通过深入学习和实践,开发者可以充分利用Yii的强大功能,构建出高效、可扩展的Web应用。
### yii的小部件使用 在Yii框架中,小部件(Widgets)是用于封装并重用页面元素的一种机制。本文主要探讨如何在Yii框架中利用小部件(Widgets)来提高开发效率,尤其是在快速生成增删改查功能时的具体应用,并结合...
6. **数据库迁移**:可能有迁移脚本(migrations),用于创建RBAC相关的数据库表。 通过这个项目,开发者可以快速搭建起一个功能完备的后台管理系统,包括用户登录、角色分配、权限设置等功能。同时,layui的使用...
Yii 2.0.6 是一个非常重要的版本更新,在这个框架的迭代历程中扮演了关键的角色。Yii 2 是一个高性能、组件化的 PHP 框架,专为开发 Web 2.0 应用程序而设计。这次更新的版本 2.0.6 带来了许多改进和修复,使得...
《深入理解Yii2.0》是一本干货。主要讲解Yii2.0及所代表的最新一代Web开发框架的新特性、新技术、新理念、新模式。 采用的方式是分析框架的源代码,尝试从根上进行理解和阐述,并融入个人使用Yii开发的一些经验和...