tp5的模型事件只有在调用模型方法的时候生效,使用查询构造器是无效的。
也就是说,不实例化模型进行操作before_insert这个方法是不执行的。
模型的意义就是为了简化控制器操作,简化逻辑处理,提升代码的整洁度和可读性。这样一来模型事件起到了至关重要的作用。
这篇文章就介绍一下模型事件‘before_insert’事件对于下单逻辑的帮助。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace app\common\model;
use think\Model;
use daichongweb\helper;
class ShopOrderM extends Model
{
protected $table = 'shop_text';
protected static function init()
{
self::beforeInsert(function($ShopOrderM){
//创建订单号
$ShopOrderM['orderno'] = helper::buildOrderno('T', 'shop_text'); $ShopOrderM['name'] = $ShopOrderM['name'].'1';//处理前端传过来的数据进行操作
return $ShopOrderM;
},true);
}
}
1 |
|
从控制器的代码可以看出,控制器的逻辑处理只有接收数据、验证、执行插入。
生成订单、处理数据全部放在模型的新增前处理。
$ShopOrderM[‘name’] = $ShopOrderM[‘name’].’1’;这里就是自动向数据表的name插入数据。