php博客浏览人数,在博客中实现浏览次数的统计
由于最近都在搭建自己的博客,像一些基本的功能如文章的發表,編輯等功能在之前就實現好了,今天主要是說說自己在實現瀏覽次數的統計上的解決方法。
在Laravel中,利用Eloquent的One-To-Many的關系,實現一篇文章有多條瀏覽記錄,具體思路如下:
用戶訪問文章頁面-->取得ip地址和文章id,存入數據庫 再次訪問時根據ip和文章id判斷是否新增記錄
利用weboAp/VisitorPackage可以輕松實現,具體步驟如下:
1.在composer.json中添加weboAp/VisitorPackage:
{
"require": {
"weboap/visitor": "dev-master"
}
}
然后執行:
composer update
將Service添加到config/app.php中:
'Weboap\Visitor\VisitorServiceProvider'
之后再執行下面兩個命令:
php artisan vendor:publish
php artisan migrate
storage/geo/
當然/geo是需要自己創建的目錄。
上面的步驟之后你將會得到一個表visitor_registry,這里我們首先為visitor_registry添加一個字段article_id用于One-To-Many的關系。
php artisan make:migration add_article_id_to_visitor_registry --table='visitor_registry'
在生成的migration大概是這樣寫:
public function up()
{
Schema::table('visitor_registry', function (Blueprint $table) {
$table->integer('article_id')->unsigned()->index();
$table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');
});
}
創建VisitorRegistry模型:
php artisan make:model VisitorRegistry
在VisitorRegistry.php中寫上一下代碼:
protected $table = 'visitor_registry';
protected $fillable = ['clicks'];
public function articles()
{
return $this->belongsTo('App\Article');
}
上面我們通過articles()聲明了VisitorRegistry對Article的關系,于是在Article中也聲明關系:
public function visitors()
{
return $this->hasMany('App\VisitorRegistry');
}
關系修改完畢之后,由于我們為visitor_registry表添加了article_id字段,所以我們需要修改weboAp/VisitorPackage中Visitor.php文件的log()方法,因為這個就是執行插入數據的實際方法,我們首先給它闖入一額文章的id:
public function log($article_id){}
然后對log()方法里面修改第二個條件判斷:
if( $this->has( $ip ) && $this->hasArticle($article_id) )
{
//ip already exist in db.
$visitor = VisitorRegistry::where('ip','=',$ip)->where('article_id','=',$article_id)->first();
$visitor->update(['clicks'=>$visitor->clicks + 1]);
return true;
}
上面我們自己添加了一個hasArticle($article_id,$ip),我們可以直接將這個方法寫在Visitor.php中:
public function hasArticle($id,$ip)
{
return count(VisitorRegistry::where('article_id','=',$id)->where('ip','=',$ip)->get()) > 0;
}
最后我們還要修改log()中的插入數據的數組數據$data:
$data = array(
'ip' => $ip,
'country' => $country,
'clicks' => 1,
'article_id' => $article_id,
'updated_at' => c::now(),
'created_at' => c::now()
);
我們就添加'article_id' => $article_id,到這里,我們的準備工作做好了,然后在ArticleController中的show($id)方法使用:
Visitor::log($id);
有了數據之后我們可以將它展示給用戶看,在展示文章的頁面寫上類似下面的內容:
{{ count($article->visitors) }} 瀏覽打完收工,很開心。
Happy Hacking
總結
以上是生活随笔為你收集整理的php博客浏览人数,在博客中实现浏览次数的统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 康佳电视质量怎么样?
- 下一篇: 到底什么样的人确实应该买一辆车。。?