我正在尝试从我的数据库中订购内容列表。我希望它按照最新内容的顺序排在页面顶部,最旧的内容位于底部。我有一个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 →</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);
}
}
答案 0 :(得分:0)
Itachi是正确的,只是错过了'DESC'
:
$post = Post::where('slug', '=', $slug)->orderBy('created_at', 'DESC')->firstOrFail();
请注意,firstOrFail
只会返回一个结果集。