首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

yii2使用Migrations为整个数据库表创建迁移

例如,在应用开发的过程中,新建了一张表,在应用部署到生产环境后,发现需要为这张表创建一个索引以提升查询性能,等等。.../yii2/views/createTableMigration.php 我们先打开核心文件(BaseMigrateController.php)方法:actionCreate 行数大概在:493行。...这里为什么要新增条件 WHERE Key_name'PRIMARY',因为当你有个自增主键的时候,他也输出出来,但这个自增主键并不是我们想要的索引字段,所以我们使用条件将他干掉。...现在开始到视图模板(/vendor/yiisoft/yii2/views/createTableMigration.php):我们修改up方法里面的代码,这里能看到只有一个自增ID。...如果报表已存在的错误的话,那么就是你没有将表删完,Migrations创建迁移 跟 其他操作的时候,自动新增一张为 migrtions的表,这张表是记录的。

1.9K31

yii2开发中19条推荐实践

Composer 这个是做yii2开发的基石,除非没有办法使用,否则请不要放弃,除了更容易的安装yii2及第三方扩展外,能使用Composer代表着你的服务器最少能运行起来php-cli,那么你就可以使用...// config/web.php 'language'=>'zh-CN' 静态缓存问题 在用yii2的时候,我们习惯将静态文件(图片、css文件、js文件等)放到资源类中管理,但是可能存在浏览器缓存问题...,别说你的程序将来没有移动端,早早的选择一个支持emoji的数据库避免我们下载第三方库去解决报错问题。...$orders = $customer->orders; } 上面的代码执行了101次查询,如果数据更多那?对于上面的问题我们是这样解决的。...,一般表内都会有记录生成时间和更新时间字段。

3.3K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    YII2通过composer优化vendor

    框架安装问题 在Yii2社区里经常会遇到一类问题,那就是 安装完官方推荐的版本后 1 为什么没有vendor文件夹?...在Yii2 中,vendor是composer下载的依赖库文件,官方的项目模板代码里只有其自己的项目文件,而其依赖的yii框架等类库,都记录在composer.json里面,只要安装好composer,...2.1 使用 composer remove 删除包 所删除的包必须在vendor文件夹下的composer.json中有记录,并且在删除包的同时,所有的包重新安装一次。...4 vendor路径问题 vendor路径问题造成的目录或文件不存在提示 假设我们的项目路径是 E:\sources\templates 在Vendor路径有问题时,会出现以下类似的问题,即某个composer...在工程的主配置文件main.php下有关于vendor的配置入口,VendorPath具体值,要结合配置文件的路径,请参照下面的两幅图以及相关的路径配置 第一幅 ?

    1.4K40

    win7系统下安装yii2步奏

    之前在liunx上安装过yii2,感觉很简单,今天在windows上折腾了一下,发现缺少各种扩展,费了不少功夫才解决,现在把过程和注意细节记录下来,以备以后在安装时查看。...出现上图图案表示已经安装成功。...apiweb/bootstrap/apidoc 注:E:/apiweb/bootstrap/apidoc是程序的目录,建议写全目录 之后等待很长时间,注意还需要书写github上的token,具体获取方法自行查询...看着上面的操作步骤简单,但是往往实际运行时会出现各种问题,以下是出现的各种问题汇总。 问题一:缺少openssl。...配置数据库 common\config下的main-local.php文件,改成自己的 然后,可以导入一个yii2自带的一个user表,执行成功后,自动在你的库里面创建user表和migration

    68520

    搭建自己的PHP MVC框架详解

    config.php'); 命名空间和自动加载 为什么把命名空间和自动加载放到一块说呢?...在一个PHP项目中,类特别多的时候,如果类名重复的话就会造成混乱,而且相同文件夹内也不能存在同名的文件,所以这时候命名空间和文件夹就搭档出场了。...r=index/login 后,系统自动调用/app/Controller/Index.php下的login方法。完成了这么一个简单的路由。...③ 一量程序中的函数出现异常结果或状况,如果使用函数的return方式返回异常信息,层层向上,每一次都要进行return判断。使用异常处理我们可以假设所有的返回信息都是正常的,避免了大量的代码重复。...方法,在catch代码块中,就可以直接使用$e->log来记录一个异常日志了。

    1.1K40

    搭建自己的PHP MVC框架详解

    config.php'); 命名空间和自动加载 为什么把命名空间和自动加载放到一块说呢?...在一个PHP项目中,类特别多的时候,如果类名重复的话就会造成混乱,而且相同文件夹内也不能存在同名的文件,所以这时候命名空间和文件夹就搭档出场了。...r=index/login 后,系统自动调用/app/Controller/Index.php下的login方法。完成了这么一个简单的路由。...③ 构造其__clone魔术方法,防止clone出一个新的对象; DB类的sql查询函数 DB查询函数是一个很复杂的部分,它是一个自成体系的东西,像TP和YII的查询方法都有其独特的地方。...③ 一量程序中的函数出现异常结果或状况,如果使用函数的return方式返回异常信息,层层向上,每一次都要进行return判断。使用异常处理我们可以假设所有的返回信息都是正常的,避免了大量的代码重复

    1.1K50

    Yii2工作中的一些方法技巧

    作为自己的周总结,平时遇到的问题,以及一不小心踩的坑,记录下来自己当复习: 表单验证 表单验证,两个参数中至少需要一个(2个以上): public function rules() {...where 多个查询条件示例: User::find()->where(['and', ['xxx' => 0, 'yyy' => 2], ['>', 'zzz', $time]]); 查询的时候...FROM `post_comment` WHERE `status`=1 ORDER BY `created_at` DESC) `tmpA` GROUP BY `post_id` sql计算字段中相同值重复次数...给mysql数据库表添加字段后,立即使用这个字段时会出现未定义的情况(Getting unknown property) 原因:yii 对数据表结构进行了缓存。...app->getRequest()->getReferrer() 前端显示 英文不换行问题 当GridView和DetailView列表中的某一条内容为连续的英文或数字(比如网站链接等)时,该内容不换行

    3.3K31

    YII2框架中查询生成器Query()的使用方法示例

    本文实例讲述了YII2框架中查询生成器Query()的使用方法。分享给大家供大家参考,具体如下: YII2中的yii\db\Query给我们提供了非常丰富的方法,方便我们构建复杂的SQL语句。...//通过all查询多条记录 //我这里用tb_user表来进行演示 $data1 = (new Query())- select(['id', 'name']) - from('{{%user}}')...=:id', [':id' = '2']) - all(); //通过one查询单条记录 $data3 = (new Query())- select(['id', 'name']) - from('...优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总...》 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

    1.3K50

    yii2开发后记

    yii的默认方法是index,可以在vender/yiisoft/yii2/base/Controller.php 中进行初始设置,也可以在控制器中改写defaltAction='action'。...5.布局模式 yii默认开启布局模式,其布局模板为view中的layout中的main.php,我们可以在veder/yiisoft/yii2/web/controller.php基础类中public...yii里的QUERY查询语句构造器非常简单好用,它可以用在模型和控制器中,虽然可能造成模型与表不对应,但其构成接近sql语句,使用它可以轻易写出复杂的sql语句而不必严格遵从yii的内置规则。...11.自定义函数 yii里面自定义函数可以在vendor/yiisoft/yii2/helpers/文件夹里,新建一个XXX.php文件,然后定义一个自定义类,再定义静态方法YYY()。...使用时应用基命名空间,use yii\helpers\XXX,然后用类来引用基静态方法XXX::YYY() 12.关联模型 yii里面的关联模型,用来在取得当前表内的一条记录时,取出对应表的记录

    3.2K50

    二级域名跨域session共享, yii2

    为什么80%的码农都做不了架构师?>>> ?...在项目实施过程中,往往把一个大项目进行分拆成几个独立的项目,项目用完全独立的域名和文件,可以放到不同的服务器上的独立分项目 yii2就可以这样进行 譬如  做一个电子商务系统,  1.产品,分类,首页使用域名...account.domain.com 3.购物车页面使用域名:cart.domain.com 4.下单页面使用域名:checkout.domain.com 分拆成4个域名子项目 这样就需要在二级域名之间进行session共享同步 在yii2...session共享 两个完全独立的yii2是可以使用yii中的session读取的 注意配置 'request' => [             'class' => 'common\web\Request...不然你的部分session值将会出现问题的!

    2K10

    关于Yii2框架跑脚本时内存泄漏问题的分析与解决

    现象 在跑 edu_ocr_img 表的归档时,每跑几万个数据,都会报一次内存耗尽 PHP Fatal error: Allowed memory size of 134217728 bytesexhausted...于是跟踪到 Yii2中execute的具体代码块发现在记录 log 的时候会将使用很高的内存,分析代码之后得出造成泄漏的代码块如下: 造成泄漏的代码块 /** * Logs a message with...框架中的 vendor/yiisoft/yii2/log/Logger.php:156 log函数的156行之后会判断 count(this- messages) = this- flushInterval...如果在刷新到磁盘之前就已经将 php.ini 设置的 128M 内存打满的话,直接报错申请内存耗尽。...很多关于 YII2其他原因的内存泄漏的讨论 https://github.com/yiisoft/yii2/issues/13256 解决方案 在程序开始时,设置 flushInterval 为一个比较小的值

    1.4K31

    YII2框架中日志的配置与使用方法实例分析

    本文实例讲述了YII2框架中日志的配置与使用方法。分享给大家供大家参考,具体如下: YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用。...'levels' = ['error', 'warning'], //追加上下文信息,默认YII包含PHP全局变量,这里我们不需要,设为空。...'levels' = ['error', 'warning'], //追加上下文信息,默认YII包含PHP全局变量,这里我们不需要,设为空。...YII2设置flushInterval和exportInterval的作用是什么,因为在一些系统中日志的操作很频繁,如果频繁的读取文件或数据库来写日志,造成严重的IO消耗,降低系统性能,这也是YII2...优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

    1.6K10

    搭建自己的PHP框架心得(三)

    续言 接着完善自己的PHP框架,本次更新的主要内容有: 介绍了异常处理机制 完善了异常和错误处理 数据表跟Model类的映射 异常处理 异常处理:异常处理是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况...个人总结其优点如下: 可以快速终止流程,重置系统状态,清理变量和内存占用,在普通WEB应用中,一次请求结束后,FAST CGI自动清理变量和上下文,但如果在PHP的命令行模式执行守护脚本时,它的效果就会很方便了...一量程序中的函数出现异常结果或状况,如果使用函数的return方式返回异常信息,层层向上,每一次都要进行return判断。使用异常处理我们可以假设所有的返回信息都是正常的,避免了大量的代码重复。...使用‘describe table_name’ 查询语句; 分析查询结果:对每一个字段,有Field(字段名)、Type(数据类型)、Null(是否为空)、Key(索引信息,‘PRI’表示为主键)、Default...真是越学习越觉得自己认识不够,在看一些PHP框架源码时,有时候感觉自己还差得很远,那种整体感和布局感,估计需要时间和经验的积累吧。

    1.2K60

    在MySQL里,有个和in一样的东东叫做exists,但是它比in更牛叉,你么? 转

    为什么80%的码农都做不了架构师?>>> ?...` WHERE user.id = order.user_id) exists用于检查子查询是否至少返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。...当子查询返回为真时,则外层查询语句将进行查询。 当子查询返回为假时,外层查询语句将不进行查询或者查询不出任何记录。 因此上面的SQL语句旨在搜索出所有下过单的会员。...如:user表有10000条记录,order表有1000000条记录,那么exists()执行10000次去判断user表中的id是否与order表中的user_id相等....但是:user表有10000条记录,order表有100条记录,那么exists()还是执行10000次,还不如使用in()遍历10000*100次,因为in()是在内存里遍历,而exists()需要查询数据库

    77610
    领券