Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2静态函数未返回正确的值_Php_Mysql_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel 4.2静态函数未返回正确的值

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(); } 这就像一个符咒,当

我有一个Laravel4.2应用程序,但我想展示一些统计数据

所以我想展示给大部分的观众等等

我明白了:

一个名为Stats的类,其中包含以下代码:

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仍然无法获取它,您能回答吗?