我希望每天都有大量的访问者。我正在使用Laravel 4。
我拥有的数据库结构是:
姓名:
visitor
现在我尝试使用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)*/;
}
答案 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();