tp5 使用技巧(持续更新中...)

本文分享了ThinkPHP5(TP5)框架的实用技巧,包括自动写入时间、过滤字段的方法,跨模型关联及模型事件的使用。通过具体示例介绍了如何在模型事件中记录积分变化的日志,为开发者提供了宝贵的实战经验。

tp5 使用技巧(持续更新中...)

1、自动写入时间 create_time和update_time

    使用save方法才行,insert方法不生效,不知为何

2、过滤字段 allowfield和strict方法
    allowfield()方法配合save方法,
    strict()方法配合insert方法,

    搭配使用,不知怎的,交叉就不能过滤字段了

3、跨模型,有点像是远程一对多关联的替代

1 $list = self::with(['album','album.Image'])
2     ->where('type','neq',2)//合伙人不显示
3     ->where($where)
4     ->order("type DESC,login_num DESC")
5     ->page($page, $pageSize)
6     ->select();

 4、模型事件,参考文档:tp5的事件

 1 //修改事件
 2 protected static function init()
 3 {
 4    //如有变更积分
 5     self::beforeUpdate(function ($row) {
 6         $changedata = $row->getChangedData();
 7         if (isset($changedata['score'])) {
 8             $origin = $row->getOriginData();
 9             ScoreLog::create(['user_id' => $row['id'], 'score' => $changedata['score'] - $origin['score'], 'before' => $origin['score'], 'after' => $changedata['score'], 'memo' => '商城分红改变积分']);
10         }
11    });
12 }

调用方式如下:

1 $score = bcmul($bonus,$vvv);
2 if ($score) {
3     $row = $user_model->get($kkk);
4     $data = $row->getOriginData();
5     $score_before = $data['score'];
6     $row->validate(false)->allowField(true)->save(['score'=>$score + $score_before]);
7 }

 如果想要在模型事件里增加传参,只需要往$row对象里多赋值一个属性就好了

转载于:https://www.cnblogs.com/cyfblogs/p/10235226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值