Laravel商城项目中怎样对浏览量统计,代码是什么
Admin 2022-06-21 群英技术资讯 339 次浏览
最近有一个商城项目中有统计商品点击量和艺术家访问量的需求,但又不想改动太多原来的代码,而点击与访问这两个动作是有明确触发点的,正好可以用laravel中的事件系统来做,在点击和访问对应的函数中产生这俩事件,监视器获取到之后,再将记录保存到数据库中,并更新计数。
1、在 app\Providers\EventServiceProvider
中注册监听器:
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ ...... 'App\Events\Statistics' => [ 'App\Listeners\BehavioralStatistics', ], ...... ];
2、执行
php artisan event:generate
生成事件类与监听类
3、定义事件
<?php namespace App\Events; use Illuminate\Broadcasting\Channel; use Illuminate\Queue\SerializesModels; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Broadcasting\PresenceChannel; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class Statistics { use Dispatchable, InteractsWithSockets, SerializesModels; public $user; public $obj; /** * Create a new event instance. * * @return void */ public function __construct($user,$obj) { $this->user = $user; $this->obj = $obj; } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new PrivateChannel('channel-name'); } }
4、定义监听器:
<?php namespace App\Listeners; use App\Events\Statistics; use App\System\StaticsView; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Support\Facades\Log; class BehavioralStatistics { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param Statistics $event * @return void */ public function handle(Statistics $event) { $obj_class = get_class($event->obj); $statics_view = new StaticsView; switch($obj_class){ case "App\\User": $statics_view->statics_type = 'user'; break; case "App\\Production": $statics_view->statics_type = 'production'; break; } $statics_view->ip = request()->getClientIp();; $statics_view->time_local = 0; $statics_view->statics_id = $event->obj->id; $statics_view->save(); } }
5、触发事件:
event(new Statistics(user, user,user,production));
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
<?php//获取水印图片$logo=newImagick("hacktea8.png");$logo->setImageResolution(0.01,0.03);//创建一个Imagick对象,同时获取要处理的源图$im=newImagick("www/hacktea8/com.jpg"); //获取源图片宽和高$srcWH=$im->getImageGe
众所周知,PHP7使用率很高,有需要的朋友可以看看,列出一些容易踩雷的坑,并给出方法讲解,方法干练有效。
今天小编就为大家分享一篇在laravel中实现ORM模型使用第二个数据库设置,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
php设计模式下拥有各种各样的模式,下文中小编将为大家列举出能够提供一个访问它的全局访问点Singleton(单例模式)的代码详解,有需要的程序员可以直接在下文中拷贝使用。
php中autoload怎样使用?对于学习PHP新手来说,对于autoload()函数的使用可能不太清楚,对此,这篇文章就给大家介绍一下autoload的用法以及步骤,有着方面学习需求的朋友可以看一下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008