//模板
{if false}
1
{else/} //====》可以使用 效果同 {else /}
2
{/if}
{if condition="(1 eq 1) and false"} //可用 同 {if (1==1) AND (false)}
1
{else /}
2
{/if}

Tp5.1手册上并没有介绍model中如何使用事务回滚

 public function sendReply($id,$where)
{
$this->startTrans();
$result = Email::where($id)->update($where);
if ($result) {
//更新邮件状态
$this->commit();
} else {
$this->rollback();
}
return $result;
}

但是是可以直接拿来用的,注意一定是innodb型。myisam无效,涉及数据库操作时,直接操作完成,没有提交回滚什么事

测试1对1关联模型

dump($trade = EPTrade::get(3));
dump(EPTrade::get(3)->EPForm);
$trade['状态'] = $trade['状态'].'999';
$trade->EPForm['状态'] = $trade->EPForm['状态'].'99'; $trade->EPForm->save(); //只会保存EPForm中修改的数据,不保存$trade模型的数据
$trade->save(); //必须的 dump($trade = EPTrade::get(3));
dump($trade = EPTrade::get(3)->EPForm);

做验证的时候

当有个字段需要多行才能解决时,可以取个别名的方式

场景这么也是能用的

EPForm::where([['id', '=', $postId],['编号', '=', $userName]])->find();

如果字段不正确会直接报错

如果结果不存在会返回

如果查询到结果会返回

实现arrayAccress的对象

当修改成功是,返回的是 int(1)

当没有任何修改的时候返回int(0)

字段不存在或者类型不合适不会有任何表现,只会插入正确的字段(和转换后的结果?)

遇到一种情况

控制器层 Db::startTrans(),开启事务后,一段操作后,出现死锁。

解决办法是过程中用了助手函数db();改了之后正常。

参考

Thinkphp5.1当多个场景token附加的某固定字段无法保证每个场景都有时,可以这么用

2017-11-18:15:08:23

模板中可以使用公共方法

//D:\wwwroot90\application\user\common.php

function gp() {
return 'haogp';
}

2018-03-01 08:59:59

TP5.1模型关联forupdate问题

//GoldBuy模型
...
//购买 belongsTo 挂单
public function source()
{
return $this->belongsTo('GoldMarket', 'pid', 'id');
}
//调用
$buyInfo = GoldBuy::where('id', $ids)->lock(true)->find();
$buyInfo->source;

关联查询并没有锁记录

我的方案是

//调用
$buyInfo = GoldBuy::where('id', $ids)->lock(true)->find();
$buyInfo->source()->lock(true)->find();

Thinkphp5.1手册太简单,有的功能用起来不确定结果是否和预料的一样,顾整理记录的更多相关文章

  1. 在VS2012中实现Ext JS的智能提示太简单了

    Visual Studio 2012太强大了,居然能自己会去提取Ext JS的类的属性和方法,从而实现只能提示.下面就来介绍一下实现这个功能. 在Visual Studio 2012中随便创建一个We ...

  2. ThinkPHP5.0 实现 app微信支付功能

    相对于之前随笔写的<ThinkPHP5.0实现app支付宝支付功能>来说,php对接app微信支付功能就相对简单的多了,最近有加我的朋友问到app微信支付,所以我把app微信支付的demo ...

  3. 程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单?| 每一张图都力求精美

    悟空 种树比较好的时间是十年前,其次是现在. 自主开发了Java学习平台.PMP刷题小程序.目前主修Java.多线程.SpringBoot.SpringCloud.k8s. 本公众号不限于分享技术,也 ...

  4. System.DateUtils 1. DateOf、TimeOf 简单修饰功能

    编译版本:Delphi XE7 { Simple trimming functions } // 简单修饰功能 function DateOf(const AValue: TDateTime): TD ...

  5. python3实现简单爬虫功能

    本文参考虫师python2实现简单爬虫功能,并增加自己的感悟. #coding=utf-8 import re import urllib.request def getHtml(url): page ...

  6. 插件介绍 :cropper是一款使用简单且功能强大的图片剪裁jQuery插件。

    简要教程 cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持鼠标滚轮操作,支持图片旋转,支持触摸屏设备,支持canvas,并且支持跨浏览器使用. c ...

  7. SharePoint 2013 &quot;通知我&quot;简单的功能

    简单的功能 "通知我"内部列表或文档库中的主要项目.加入/删除/修改等操作,用户的E- mail通知设定功能:设置列表或文档库通知的能力,有可能设置通知为一个单一的项目.这是Sha ...

  8. Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件!

    源:Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件! 2014年02月06日发布控件的重要更新版本: Victor 串口控件 1.5.0.2 版本 (包 ...

  9. 基于django的自定义简单session功能

    基于django的自定义简单session功能 简单思路: 1.建立自定义session数据库 2.登入时将用户名和密码存入session库 3.将自定义的随机session_id写入cookie中 ...

随机推荐

  1. 【Python图像特征的音乐序列生成】如何标记照片的特征

    目前我能想到的办法是这样的: 1,提取照片中的实体特征,借用某个pre-trained model进行tag标记. 2,将特征组合起来,形成一个bag-of-word model,然后将这个向量作为输 ...

  2. phar打包项目压力对比测试

    工具 http_load 测试url: http://api.test.chaoma.me/agent/ad/good_goods/query http://api.test.chaoma.me/ag ...

  3. 学习Unity 4.6新GUI系统

    (搬运自我在SegmentFault的博客) 最近在学习Unity的过程中,自己做一款小游戏自娱自乐.自然需要用到GUI.但4.5中的GUI很难用,一个选择是传说中的NGUI插件.但对于4.6中的新G ...

  4. UVALive 3983 Robotruck (单调队列,dp)

    如果状态定义为序号和重量的话,决策就是下一个垃圾捡或者不减,但是状态数太多了. 如果只定义序号作为状态的话,决策就变成从前面的某个j一直捡到i才送回垃圾. 这就变成了一个区间选最小值的问题,用单调队列 ...

  5. noip模拟赛#14

    #14: T1:f[x]=x-1(x&1)||x/2(x&1=0) 求[n,m]有多少个数可以通过变换得到k.(1e9). =>好像cf上看过类似的题,用二进制的方式来写.不过我 ...

  6. AWVS12 防止反复注册

    以管理员权限运行cmd,输入以下内容: cacls "C:\ProgramData\Acunetix\shared\license." /t /p everyone:r 如图:

  7. Paper: TranE

    论文标题:Translating Embeddings for Modeling Multi-relational Data 标题翻译:多元关系数据翻译嵌入建模 摘要: 考虑多元关系数据的实体和关系在 ...

  8. RenderBody,RenderPage和RenderSection

    1. RenderBody 在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面中,会看到<body>标签里 ...

  9. OC和C++的混用1

    //Objective-C类 /*在混用之前需要做一步非常重要的事:不是代码而是编译器选项,在做混合编译之前一定要把编译器的Compile Sources As选项改为Objective C++. 修 ...

  10. numpy的linspace使用详解

    文档地址: https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html Parameters(参数): start ...