如果使用`count`,PHP Laravel orderby不起作用

时间:2018-12-13 11:03:44

标签: php laravel

我想按其release_date对数据进行排序/排序,但是出现一个我不明白的错误:

在我的控制器中,我有:

public function index() {
    $releases = Release::orderBy('release_date', 'desc');
    return view('pages.index')->with('releases', $releases);
}

在我的查看文件中,我有这个:

@if (count($releases) > 0) 
  @foreach ($releases as $release)
    <div>
        <p>{{$release->artist}} - {{$release->album_title}} <span>ReleaseDate: {{$release->release_date}}</span></p>
    </div>
  @endforeach
@endif

这将返回错误:

  

count():参数必须是实现的数组或对象   可数的

这是什么意思?有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

public function index() 
{
    $releases = Release::orderBy('release_date', 'desc')->get();

    return view('pages.index')->with('releases', $releases);
}

您的代码之前无法工作的原因是因为orderBy不会执行查询,它只会添加查询。在这种情况下,您需要最后链接到get()上才能执行查询并获取结果,否则您将只获取查询生成器的实例。

答案 1 :(得分:0)

更改控制器

public function index() {
    $releases = Release::orderBy('release_date', 'desc')->get();
    return view('pages.index',compact('releases');
}

更改视图

@if ($releases->count() > 0) 
  @foreach ($releases as $release)
    <div>
        <p>{{$release->artist}} - {{$release->album_title}} <span>ReleaseDate: {{$release->release_date}}</span></p>
    </div>
  @endforeach
@endif