Laravel控制器__construct问题

时间:2017-07-01 19:50:28

标签: php laravel-5 controller laravel-5.4

所以我和我的controllers有一些戏剧。他们似乎运作正常,但他们似乎根本没有__construct()使用controllers ..我试图用它来更新我们的users table显示上一个活动。

<?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]);
  }

}

知道我可以做些什么来检查并尝试再次使用它?

我正在运行Laravel框架5.4.28

我做过类似的项目是运行Laravel框架版本5.2.45并在我这样做时工作正常,所以我很困惑为什么会在新版本上发生这种情况。

在从DB加载内容时,如何实现controllers更新的任何想法?

1 个答案:

答案 0 :(得分: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,
         ...
  ];

如果您愿意,也可以将其限制为管理员控制器。