Laravel 充分利用数据库
Laravel get most out of the database
我在 Laravel 4
中有一个跟踪器,我想知道如何从我的 table.
中获取 'most'
所以我想要的是拥有最多访客的那一天。
我的 table 结构如下所示:
所以,我的控制器看起来像这样:
public function index()
{
$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 average visits
// transform dates to DateTime objects (we need the number of days between $begin and $end)
$begin = new \DateTime($begin);
$end = new \DateTime('now');
$diff = $end->diff($begin); // creates a DateInterval object
$days = (int)$diff->format('%a'); // %a --> days
$average_visits = $get_visits / $days;
return View::make('admin.home.index')->with('stats', $visits)
->with('get_visits', $get_visits)
->with('average_visits', $average_visits);
}
我想要的输出:
We had the most visitors on 18/06/2015 (542 visitors)
例如
谢谢!
您可以SELECT日期ORDER BY访问者数量DESCENDING 和 LIMIT 减 1。这是基本的 mysql。如何在 laravel 中使用它,在 documentation.
中
按说明排序:
->orderBy('visits', 'desc')
限制:
->take(1)
我的示例查询基于一个系统,该系统有一个计算访问次数的列(您的结构没有)。因此,让我来帮助您完成结构。
你想按日期得到它所以你基本上 GROUP BY date:
->groupBy('date')
您希望从此查询中获得属于该日期的行数。所以你使用 COUNT:
->count()
这完全基于您对查询的了解。 这都是根据查询生成器。
我在 Laravel 4
中有一个跟踪器,我想知道如何从我的 table.
所以我想要的是拥有最多访客的那一天。
我的 table 结构如下所示:
所以,我的控制器看起来像这样:
public function index()
{
$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 average visits
// transform dates to DateTime objects (we need the number of days between $begin and $end)
$begin = new \DateTime($begin);
$end = new \DateTime('now');
$diff = $end->diff($begin); // creates a DateInterval object
$days = (int)$diff->format('%a'); // %a --> days
$average_visits = $get_visits / $days;
return View::make('admin.home.index')->with('stats', $visits)
->with('get_visits', $get_visits)
->with('average_visits', $average_visits);
}
我想要的输出:
We had the most visitors on 18/06/2015 (542 visitors)
例如
谢谢!
您可以SELECT日期ORDER BY访问者数量DESCENDING 和 LIMIT 减 1。这是基本的 mysql。如何在 laravel 中使用它,在 documentation.
中按说明排序:
->orderBy('visits', 'desc')
限制:
->take(1)
我的示例查询基于一个系统,该系统有一个计算访问次数的列(您的结构没有)。因此,让我来帮助您完成结构。
你想按日期得到它所以你基本上 GROUP BY date:
->groupBy('date')
您希望从此查询中获得属于该日期的行数。所以你使用 COUNT:
->count()
这完全基于您对查询的了解。 这都是根据查询生成器。