2017-07-01 16 views
0

私はcontrollersでドラマをいくつか持っています。彼らは正常に動作しているようですが、controllersのいずれでも__construct()を使用していないようです。これを使用して、users tableを更新して最後のアクティビティを表示しようとしています。Laravelコントローラ__construct問題

<?php 

namespace App\Http\Controllers; 

use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Http\Request; 
use App\Helpers\UserHelper; 
use App\Helpers\ForumHelper; 
use App\Helpers\ShopHelper; 
use Auth; 
use Image; 
use App\User; 
use DB; 
use Hash; 
use File; 

class AdminController extends BaseController 
{ 

public function __construct() { 
    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) { 
    $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"]; 
    } 

    if(Auth::check()) { 
    $time = strtotime("now"); 
    DB::table('users')->where('userid', Auth::user()->userid)->update(['lastactivity' => $time]); 
    } 

} 

私が確認してからやり直すために何ができるか考えてみましょうか?

私は5.4.28

私はLaravel Frameworkバージョン5.2.45を実行した上で同様でしたし、私はこれが新しいバージョンに起こっているなぜ私は混乱していることをやっていた時にうまく働いたプロジェクトをLaravel Frameworkを実行しています。

のものを読み込むときに、DBアップデートを実装する方法については、どのようなアイデアがありますか?

+0

Auth :: check()はコンストラクタでは動作しません。コンストラクタは、セッションが開始される前に呼び出されます。ミドルウェアを使用して、あなたがやっていることを解決する必要があります。 – apokryfos

答えて

0

アクティビティトラッカーをしたい場合は、ウェブルートのミドルウェアを追加:あなたのWebミドルウェアでこれを追加

class ActivityTrackerMiddleware { 
     public function handle($request,$next) { 
      if ($request->user()) { 
       $request->user()->lastactivity = Carbon::now(); 
       $request->user()->save(); 
      } 
      return $next($request); 
     } 
} 

を:あなたが好む場合

'web' => [ ... 
     StartSession::class, 
     ActivityTrackerMiddleware::class, 
     ... 
    ]; 

また、管理コントローラにそれを制限することができます。

+0

ありがとう、@apokryfos。私は今すぐ行くよ! – Andrew

+0

これはうまくいった!ありがとう百万@apokryfos! – Andrew