来到Laravel,游客很多

时间:2015-05-23 10:03:26

标签: php laravel laravel-4

我希望每天都有大量的访问者。我正在使用Laravel 4。

我拥有的数据库结构是:

  

姓名:visitor

Structure

现在我尝试使用Laravel的avg()函数,但我找不到合适的解决方案。有人可以用这个帮我吗?

我已经有一个控制器,如下所示:

public function index()
    {

        //$select_stats = Visitor::where('visit_date', '>=', Carbon::now()->startOfMonth())->get();

        $begin = date('Y-m-01');
        $end = date('Y-m-t');

        $visits = Tracker::selectRaw('date, count(ip)')->groupBy('date')->whereRaw("date between '$begin' and '$end'")->get();

        //get total visits per month
        $get_visits = Visitor::whereRaw("date between '$begin' and '$end'")->count();

        //get averange visits


        return View::make('admin.home.index')->with('stats', $visits)->with('get_visits', $get_visits)/*->with('get_avg_visits', $get_avg_visits)*/;

    }

2 个答案:

答案 0 :(得分:1)

基本上,您已经拥有了计算访问者平均数量所需的一切,无需额外查询:)您只需将访问总次数除以该月的天数:

public function index()
{
    $begin = date('Y-m-01');
    $end = date('Y-m-t');

    // ...

    //get total visits per month
    $get_visits = Visitor::whereRaw("date between '$begin' and '$end'")->count();

    // get average visits
    // transform dates to DateTime objects (we need the number of days between $begin and $end)
    $begin = new \DateTime($begin);
    $end = new \DateTime($end);
    $diff = $end->diff($begin); // creates a DateInterval object
    $days = (int)$diff->format('%a'); // %a  -->  days

    $average_visits = $get_visits / $days;

    // ...
}

答案 1 :(得分:0)

试试这个 -

$avrage_visit= Visitor::select(DB::raw('avg("date") as date_avg')))->groupBy('date')
  ->get();

参考 - http://laravel.com/docs/4.2/queries