在 laravel 中获取下一个和上一个条目
Posted
技术标签:
【中文标题】在 laravel 中获取下一个和上一个条目【英文标题】:get next and previous entry in laravel 【发布时间】:2017-07-02 03:45:09 【问题描述】:我正在尝试获取每个主题的下一个和上一个项目(标题和图片),我为下一个和上一个链接提供了这个:
$currentUser = PostTranslation::find($post->id);
$previousUserID = PostTranslation::where('id', '<', $currentUser->id)->max('id');
$nextUserID = PostTranslation::where('id', '>', $currentUser->id)->min('id');
但它只是获取下一个和上一个链接 id,我也需要为它们获取标题。我用过这个:
$previousUserID2 = PostTranslation::find($currentUser->id-1);
但是当id = 0
出现错误时。
【问题讨论】:
***.com/a/27942973/465388 【参考方案1】:如果您的数据集太大,max 和 min 会减慢您的 sql。
您可以将first
与orderby
一起使用,以检索与查询约束匹配的第一个模型。
$currentUser = PostTranslation::find($post->id);
//order by descending order and take the first entry
$previousUser = PostTranslation::where('id', '<', $currentUser->id)->select('id','title')->orderby('id','desc')->first();
$previous_id=$previousUser ->id;
$previous_title=$previousUser ->title;
//order by ascending order and take the first entry
$nextUser = PostTranslation::where('id', '>', $currentUser->id)->select('id','title')->orderby('id','asc')->first();
$next_id=$nextUser ->id;
$next_title=$nextUser ->title;
【讨论】:
感谢您的帮助,我已经解决了,但最后一条记录仍然存在问题,当我在第一条记录或最后一条记录时,我遇到了这个错误:尝试获取非对象的属性 @DinaShaldoum 例如,您只需要写一些支票。if($previousUser) // Do your stuff here
.【参考方案2】:
这是我在控制器上使用的最后一个代码:
$previousUser = PostTranslation::join('posts', 'posts.id', '=', 'post_translations.post_id')
->where('posts.id', '<', $currentUser->id)
->select('posts.id','post_translations.title','post_image')
->orderby('posts.id','desc')
->where('post_translations.language', $language)
->first();
【讨论】:
我在调用数据之前写了 if($previousUser) 在我看来,它已经解决了.. 这是我的答案的副本,你应该标记正确的答案而不是复制答案,它不会帮助任何人以上是关于在 laravel 中获取下一个和上一个条目的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel eloquent 中获取当前条目信息
laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)