Laravel orderBy:将其称为非对象

时间:2014-11-27 03:36:38

标签: php laravel laravel-4

我正在尝试从我的数据库中订购内容列表。我希望它按照最新内容的顺序排在页面顶部,最旧的内容位于底部。我有一个datetime,它保存created_at时间。我遇到的问题是将orderBy('created_at')放在我的模板中。它一直在说我把它称为非对象。

这是我的代码:

@if($posts->count())
    @foreach($posts as $post)
        <article>
            <h2><a href="{{ URL::action('post-show', $post->slug) }}">{{ $post->title }}</a></h2>
            {{ Markdown::parse(Str::limit($post->body->orderBy('created_at')->get(), 300)) }}
            <p>Published {{ $post->created_at->diffForHumans() }}</p>
            <a href="{{ URL::action('post-show', $post->slug) }}">Read more &rarr;</a>
        </article>
    @endforeach
@endif

看起来很多但是大部分注意力都集中在{{Markdown区域。我如何包含orderBy并让它将最新的条目放在页面的第一位。

这是我的控制器:

<?php

class PostController extends BaseController {
public function getShow($slug) {
    $post = Post::where('slug', '=', $slug)->firstOrFail();

    return View::make('posts.show')->with('post', $post);
}

}

1 个答案:

答案 0 :(得分:0)

Itachi是正确的,只是错过了'DESC'

   $post = Post::where('slug', '=', $slug)->orderBy('created_at', 'DESC')->firstOrFail();

请注意,firstOrFail只会返回一个结果集。