Laravel上一个和下一个记录,返回对象

时间:2014-11-21 15:55:32

标签: php mysql laravel

我试图从数据库中获取以前的记录,以便链接到它。

此函数中的$previous_comic只返回published_at字段,但我无法执行任何操作。

public function index()
{
    $newest_comic = Comic::orderBy('published_at', 'DESC')->first();

    $previous_comic = Comic::where('published_at', '<', $newest_comic->published_at)->max('published_at');

    return View::make('comics.index')->with('newest_comic', $newest_comic)->with('previous_comic', $previous_comic);
}

我需要这个对象,所以我可以使用{{ $previous_comic->slug }}

现在它只返回

  

&#34;试图获得非对象的属性。&#34;

我怎么能这样做?

谢谢!

3 个答案:

答案 0 :(得分:0)

$comics = Comic::orderBy('published_at', 'DESC')->take(2)->get();

$newest_comic = $comics[0];

$previous_comic = $comics[1];

答案 1 :(得分:0)

我可以想到3种可能的情况。也许其中一个会帮助你:

1)您的查询是否返回了一个对象数组,在这种情况下,您是否需要循环访问它们才能访问该属性?

2)您是否确实在数据库中创建了“slug”字段?

3)$ previous_comic肯定是一个对象而不是数组吗? IE应该使用$ previous_comic ['slug']

我熟悉Laravel,但没有大量经验,我怀疑没有。 3不是你问题的原因。

希望这会有所帮助。如果您有任何额外的细节,请随时提供。

路易斯。

答案 2 :(得分:0)

您还应该考虑当前记录是第一个

的情况
    $comic = Comic::findOrFail($id);
    $comics = Comic::orderBy('id')->get();

    $current = $orgs->search($org);

    $prev = ($current == 0) ? $comics->count() - 1 : $current - 1;
    $prevComic = $orgs->get($prev);