Thinkphp5.1手册太简单,有的功能用起来不确定结果是否和预料的一样,顾整理记录
//模板
{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();