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对象里多赋值一个属性就好了