Closed aloha1003 closed 8 years ago
@aloha1003 你好,个人认为在配置文件中设置数据库表名称的意义不大,我认为这样做虽然可以改下表名称,但不能解决使用者自己修改表结构的情况,不论是DB还是ORM都无法应对表结构的自定义。如果用户需要自定义数据库表名称/表结构,可以通过beforeSend
和afterSend
钩子来实现怎么存储数据到哪个表里面,这样一来可以解开与数据库的耦合。当然,希望能听到你的想法,感谢 😄
那請問一下,我要在什麼地方去覆寫你說的beforeSend和afterSend 這兩個方法呢 不太明白,方便給個sample code嗎,謝謝
ok,你可以看下在SmsManagerServiceProvider.php中的默认处理方式,beforeSend
和afterSend
两个方法是由PhpSms提供的。
只需要在发送短信前这样做:
PhpSms::beforeSend(function ($task, $prev, $index, $handlers) {
//该匿名函数在短信发送之前会执行,可以在这里将短信数据先保存到数据库
}, true)//后面加上true可以覆盖在SmsManagerServiceProiver中的默认处理方式
PhpSms::afterSend(function ($task, $result, $prev, $index, $handlers) {
//该函数在短信发送之后执行,可以在这里修改数据库中数据状态
}, true)
关于beforeSend
和afterSend
的文档可以在这里查看
我看你的源代碼操作table是用 DB::table('laravel_sms') ,希望可以改成ORM的方式操作 並將 tableName、connect 拉到設定檔設定