Php Laravel 4.2静态函数未返回正确的值
我有一个Laravel4.2应用程序,但我想展示一些统计数据 所以我想展示给大部分的观众等等 我明白了: 一个名为Stats的类,其中包含以下代码:Php Laravel 4.2静态函数未返回正确的值,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我有一个Laravel4.2应用程序,但我想展示一些统计数据 所以我想展示给大部分的观众等等 我明白了: 一个名为Stats的类,其中包含以下代码: public static function MostVisits() { return Tracker::selectRaw('count(*), date')->groupBy('date')->orderBy('count(*)', 'desc')->first(); } 这就像一个符咒,当
public static function MostVisits()
{
return Tracker::selectRaw('count(*), date')->groupBy('date')->orderBy('count(*)', 'desc')->first();
}
这就像一个符咒,当我在SQL server中执行呈现代码select count*,date fromprotrackgroup bydateorder bycount*desc limit 1时,它给出了正确的值
现在我想得到一切:
Stats::MostVisits->count'*'站在我的视图中,但给出该表中所有记录的计数
但是日期'd/m/Y',strottimestats::MostVisits->date确实返回了好的部分。。。那么,如何解决计数问题呢?通过添加foreach,我可以解决它 因此,控制器方法现在是:
public static function CountMostVisits()
{
$json = Tracker::selectRaw('count(*)')->groupBy('date')->orderBy('count(*)', 'desc')/*->remember(1440)*/->first();
$array = json_decode($json, true);
return $array;
}
如您所见,它返回json,需要对其进行解码
然后是一种观点:
@foreach(Stats::CountMostVisits() as $stat)
{{ $stat }}, op {{ date('d/m/Y', strtotime(Stats::MostVisits()->date)) }}.</p>
@endforeach
这为我解决了这个问题。您遇到的问题是,在查询结束时有->first 通过添加->first,您已经更改了MostVisits函数返回的内容 在调用first之前,您有一个雄辩的查询对象。在上面调用count确实会像预期的那样将查询更改为count查询 然而,在第一次调用之后,您拥有的不再是雄辩的查询对象。相反,它是包含查询返回的第一条记录的跟踪器实例。在上面调用count就好像调用了Tracker::count一样,这将为您提供所有记录的计数 解决方案是从MostVisits方法中删除->第一部分,并将其移动到调用MostVisits的位置
然后,您将能够使用MostVisits和count(按预期),或者任何其他查询修改方法。通过使用Stats::MostVisits->count'*',您明确地告诉函数显示所有记录的计数。创建变量$track=Tracker::selectRaw。。。。。。。。。然后返回$track,然后简单地使用mostvisit来获取所有内容。因此,不可能对计数使用与日期相同的函数?或者我需要返回一个变量而不是查询吗?因为答案有点奇怪…在函数中返回变量$track。MostVisits->date应该仍然有效,尝试使用MostVisits for获取所有内容。要获取特定查询,请使用MostVisits->query仍然无法获取它,您能回答吗?