首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从Laravel,Yii,Thinkphp中学习php 操作数据库的事务嵌套

    notorm本身不支持事务嵌套,但是在开发过程中,多个操作进行拆分,根据不同业务不同进行调用,必然会设计到多个事务嵌套在一起的问题。...举个栗子: 1) 公共模块A,更新用户的账户余额,添加流水记录操作。 2) 模块B,根据用户的操作(消费或充值)根据活动配置赠送相应的优惠券。...嵌套事务的核心思想就是添加一个计数器,第一次开启事务,最后一次提交或回滚执行数据库操作,其他情况只是更新计数器数值。...2) Yii2 Yii2的事务操作也是有一个单独文件进行封装,yii\db\Transaction。 ? ?...三个框架都是通过计数器以及数据库本身的"部分事务"支持嵌套事务的操作。MYSQL 中通过 savepoint 的方式来实现只提交事务的一部分。

    1.3K40

    Yii2 ActiveRecord 模型

    在插入记录的时候,使用new关键字创建AR 模型对象; 在查询、更新、删除的时候,都是用find()方法创建对象。...属性 类别 描述 alias string 表别名 distinct boolean 是否只选赞不相同的数据行 groupBy string 如何进行分组查询结果 having string 作为GROUP-BY...子句的条件 indexBy string 作为查询结果数组的索引 join string 如何加入其他的表 limit integer 要返回最多记录数 offset integer 要返回从0开始的偏移量...not exists:该操作数必须是代表子查询yii\db\Query的一个实例,会构建一个NOT EXISTS表达式。 \>或 字段的名称,第二个操作数则应该为一个值。...例如: ['>','age',10] 将会生成 age > 10 关联查询 场景:order表中的主键id 对应 order_log表中的 order_id,现在查询order表关联order_log中

    1.6K10

    Yii2开启Schema 缓存

    Schema缓存是一个比较特殊的缓存,只有当我们使用活动记录是这个缓存才会生效。 什么是活动记录 活动记录能智能检测数据库对象的集合(例如列名、列类型、约束)而不需要手动地描述它们。...活动记录是通过执行额外的SQL查询来获得该信息。通过启用 Schema 缓存,检索到的数据库对象的集合将被保存在缓存中并在将来的请求中重用。...Schema缓存开启的方法: 要开启Schema缓存,需要配置一个cache应用组件来储存Schema信息,并在配置中设置 yii\db\Connection::enableSchemaCache 为true...'cache' => [ 'class' => 'yii\caching\MemCache', //配置缓存组件,这里用了memcache ],...1、若是修改了数据表的结构,或者添加,删除了字段,都需要将enableSchemaCache设置为false之后才能生效。

    51110

    Yii2 VS thinkphp5.0

    但是从目前对tp5一周的使用时间来看,tp5相对于yii2来说,确实是弱爆了。 1、Yii2所有的操作都是对象操作。所有的对象都继承Yii中的Object对象。TP中,有对象也有函数。...YII2中,数据model时跟数据表完全映射的。一个model对象就是一条数据记录。对象的属性数据就是记录中各字段的内容。TP5中,数据model时一数据表的操作对象。提供一些数据操作方法而已。...Yii2中,new model(),然后调用save()方法,这个model就是一个完整的数据表记录,数据表的多有字段映射成为对象属性。TP中的save()方法是把记录写入数据库。然后就没了。...这里有个很大的问题就是写入数据库之后,当前model不具备数据表该记录的所有字段数据。 举个栗子:user表中有id,username,password,create_time,四个字段。...,因为必须先把数据从数据库中查询出来才操作,所以,更新的时候是能获取数据表内所有字段信息。

    2.2K20

    Yii2之数据库迁移(Migrate)

    因为一个数据库结构发生改变的时候源代码也经常会需要做出改变,Yii 提供了一个 数据库迁移 功能,该功能可以记录数据库的变化, 以便使数据库和源代码一起受版本控制。...就是说我并不直接写字段的类型,我只是写不同数据库中类似的字段定义。举个例子: mysql数据库中有text数据类型,用来存储大文本一类数据。...而mssql数据库中并没有text数据类型,但是有个类似的数据类型,叫做ntext。如果在数据库迁移到mysql的时候直接写实体字段类型text,那么如果改换数据库为mssql的时候就会很麻烦。...): 删除一张表 yii\db\Migration::truncateTable(): 清空表中的所有数据 yii\db\Migration::addColumn(): 加一个字段 yii\db\Migration...数据库中会出现一个叫做migration的表,用来记录迁移记录,如图: ? 选中的就是当前迁移操作生成的记录。 会生成一个数据表test_table并且插入一条数据。 ?

    1.7K41

    yii2开发中19条推荐实践

    虽然每个人的编程风格不同,但是有些建议能让你的代码更加规范和稳定,本次就我这次网站更新总结如下几点,希望对你的yii2学习和使用有所帮助。...模型的重要性 很多yii2的初学者喜欢将大量逻辑写到控制器的动作(action)中,这是不对的,我们的重点应该在模型中,而控制器仅仅是做输入输出。 我们拿关联举个例子,下面的这段代码是不好的。...,一般表内都会有记录生成时间和更新时间字段。...对于他们的更新请使用yii2内置的TimestampBehavior行为类,则字段数据的填充我们就无需操心了,如下代码 namespace app\models; use Yii; use yii\behaviors...生成时间 created_at 更新时间 updated_at 这样如上代码就完全够用了,无需指定字段。

    3.3K70

    yii2开发后记

    2.添加独立模块 yii可以在modules文件夹中添加自定义模块,添加完成后在web.php中的$config中的'modules'=[id=..class=...]设置模块的开关。...5.布局模式 yii会默认开启布局模式,其布局模板为view中的layout中的main.php,我们可以在veder/yiisoft/yii2/web/controller.php基础类中public...使用时应用基命名空间,use yii\helpers\XXX,然后用类来引用基静态方法XXX::YYY() 12.关联模型 yii里面的关联模型,用来在取得当前表内的一条记录时,会取出对应表的记录。...16.更新和删除 更新 //查找到一条结果 $res=$this->find()->where()->one(); //对结果修改 $res->attr='xxx'; //执行更新操作 $res->update...在ActiveForm中如果数据表中有了此字段,就不要再用public声明一个属性了,会导致attribute无法赋值。。。。(血泪)。

    3.2K50

    Yii2 学习笔记之 GridView DetailView

    在 GridView 小部件是从数据提供者获取数据,并以一个表格的形式呈现数据。表中的每一行代表一个单独的数据项,列表示该项目的属性。...在 DataGrid 小部件中的列是在 yii\grid\Column 类中进行配置的。它代表一个模型属性,并可以进行过滤和排序。 GridView 列显示常用操作 的惯例是建立一个搜索模型类继承活动记录类。然后用这个类定义搜索的验证规则和提供 search() 方法来返回 data provider 。...表,调用他的分类名,所以为了性能,在这里join一下 $query->join('articleType'); //如果增加的字段需要表头排序,则可加入以下代码...$dataProvider->setSort([ 'attributes' => [ // 其它字段不要动,下面这段是加入的

    2.2K60

    yii2 modal弹窗之ActiveForm ajax表单异步验证

    前面我们讲述了yii2中如何使用modal以及yii2 gridview列表内更新操作如何使用modal的问题,本以为modal要告一段落可以开始新的话题了,但是实际问题往往超乎想像,这不modal弹窗提交的表单说是怎么验证的问题又出来了...yii2中,ActiveForm默认做了客户端验证,但是表单的提交,却不是无刷新的。也就是常常看到的表单提交后页面会刷新。...一般而言,上面的操作没有问题,但是总是会有特殊的人遇到特别的问题,问题突出,我们下面以一个案例进行说明: 有小伙伴遇到要验证的字段是unique类型,更新操作的时候,这可傻了眼了,怎么都处理不好了,我们下面给出一个针对字段...unique规则更新操作的解决方案,但是同样兼容上面的案例说明。...用下面的可能会好一点,万一你的字段也是unique的呢! 首先我们把ActiveForm的begin配置修改如下: $validationUrl = ['validate-form']; if (!

    1.5K21

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

    大家都知道Migrations是一个在开发和维护数据库驱动的应用过程中,数据库的结构与源代码的开发同步更新。...,在Yii::$app->getDb()->getSchema()->getTableSchema(表名)方法中,已经查出了表的外键,你们可以利用。...好,上面的代码我能满足百分之80以上的字段,除了一些个别特殊的字段,什么是特殊的字段呢?...然后我们开始输出主键字段(并不是自增的哦~自增的如果存在就已经在上面输出了,这里的代码只处理主键字段)我们先判断数组是否存在且数组个数大于0,这里不能使用foreach来循环主键数组,因为$this->...如果报表已存在的错误的话,那么就是你没有将表删完,Migrations创建迁移 跟 其他操作的时候,会自动新增一张为 migrtions的表,这张表是记录的。

    1.9K31

    Yii使用技巧大汇总

    另外level,category的值可以随便写, 只要在用yii::Log("","自定义level","自定义的category")时对应起来即可 如何记录更详细的信息,能记录stack,在入口文件中加上...::app()->end(),其会触发onEndRequest事件,日志就是在这个事件中记录的 activeRecord几个占位方法重写的注意点 必须带boolean返回值 如何发布一个资源文件并引用...),记录当前的returnurl后跳转到 CWebUser配置中的loginurl,在此处登陆后,可以通过redirect跳转到 复制代码 代码如下: returnurl(Yii::app()->request...(0);//禁止角本超时 如何想把手工的东西记录的数据库 main.php中配置log ?...重新看了一遍yii blog,有些记录会与上边的重复 YII:Trace() 在debug模式是才记录信息,同时在main.php中的Log中的配置中的levels中要有trace,至于记录多少 栈由index.php

    2.4K31

    使用YII2构建一个定时任务管理后台

    显而易见的就是不知道这种鬼链接是什么个东西,想停不敢停怕背锅,久而久之就扔上面 http请求的方式触发任务,任务多的时候占用webserver的资源(如果是以cli模式触发就算了,当我没说) 无法记录任务运行的状态...,例如: 是否运行成功,运行一次耗时多少(你千万别跟我说在每个任务记录个里日志啥的好吧) 我将围绕如何解决以上三个问题来展开我的实现过程 创建一个专门管理定时任务的表 CREATE TABLE `tb_crontab...jlb */ class Crontab extends \yii\db\ActiveRecord { /** * switch字段的文字映射 * @var array */ private...替换成自己的数据库配置组件名称 return Yii::$app->tfbmall; } /** * 获取switch字段对应的文字 * @author...解析类 大家也许发现了,我这种方案只支持单服务器部署,如果定时任务太多,单机不够的情况下要做下集群,我也是有个方案,但是还没实际运用,是否有必要提上来,需要看大家的反馈与需求 G

    1.1K51

    Yii 框架使用数据库(databases)的方法示例

    上面配置的数据库连接可以在应用中通过 Yii::$app->db 表达式访问。...信息: config/db.php 将被包含在应用配置文件 config/web.php 中, 后者指定了整个应用如何初始化。 请参考配置章节了解更多信息。...如果想要使用 Yii 没有捆绑支持的数据库,你可以查看以下插件: Informix IBM DB2 Firebird 创建活动记录 创建一个继承自活动记录类的类 Country, 把它放在 models...'; $country->save(); 信息: 活动记录是面向对象、功能强大的访问和操作数据库数据的方式。你可以在活动记录章节了解更多信息。...index 操作调用了活动记录 Country::find() 方法,去生成查询语句并从 country 表中取回所有数据。

    79510

    yii2 modal弹窗之ActiveForm ajax表单异步验证

    前面我们讲述了yii2中如何使用modal以及yii2 gridview列表内更新操作如何使用modal的问题,本以为modal要告一段落可以开始新的话题了,但是实际问题往往超乎想像,这不modal弹窗提交的表单说是怎么验证的问题又出来了...yii2中,ActiveForm默认做了客户端验证,但是表单的提交,却不是无刷新的。也就是常常看到的表单提交后页面会刷新。..._modal_activeform_ajax.html // 看主要的验证操作,该操作是表单字段失去焦点时异步验证,同时如果直接提交表单,也会先执行该操作进行验证 public function actionValidateForm...如此一来就简单的实现了yii2异步无刷新表单验证了!...[考虑目前国内网站大部分采集文章十分频繁,更有甚者不注明原文出处,原作者更希望看客们查看原文,以防有任何问题不能更新所有文章,避免误导!]

    1.2K10

    1.框架安装与介绍

    通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。 特点 (1)快速 Yii 只加载您需要的功能。...模型-视图-控制器(MVC)设计模式:Yii在WEB编程中采用这一成熟的技术从而可以更好的将逻辑层和表现层分开。...数据库访问对象(DAO)和Active Record:Yii允许开发者模型数据库中的数据对象,从而减少他们在写很长和重复的SQL语句上的精力。...Web 2.0部件:由jQuery的支持,YII配备了一套Web 2.0的部件,如自动完成输入字段,TreeView等等。 身份验证和授权:Yii具有内置的身份验证支持。...例如,你可以在你的Yii应用程序中使用PEAR或Zend Framework的代码。 详细的文档:每一个单一的方法或属性都非常清楚的记录着。同时提供了一个全面的教程和一些新手教程。

    1.3K120

    Yii2.0 RESTful API 认证教程

    的字段, 1.直接在你的数据库中新增 access_token 字段。...ok,不出意外的话,相信你已经可以收到一个access_token了,接下来就是如何使用这个token,如何维持认证状态,达到不携带这个token将无法访问,返回401 维持认证状态 实现认证只需两步:...在你的 REST 控制器类中配置 authenticator 行为来指定使用哪种认证方式 在你的 user identity class 类中实现 [yii\web\IdentityInterface...魏曦老师 学的 魏曦教你学 写完认证发现我们的接口返回的数据不是很直观,现实生活中通常也不是这样子的,我们可能会返回一些特定的格式 自定义响应内容 打开 api\config\main.php 在 components...200 ,具体的可另行配置,假如登陆操作 密码错误或者其他,我们可以在控制器中这样使用: $response = Yii::$app->response; $response->setStatusCode

    1.6K30
    领券