首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何按日期获得上一次和下一次记录订单?

如何按日期获得上一次和下一次记录订单?
EN

Stack Overflow用户
提问于 2022-11-28 09:32:00
回答 2查看 26关注 0票数 0

我想在日期前和下一次收到新闻订单。如果每天只有一条新闻,下面的代码可以正常工作。但不能在同一天处理多个新闻。

NewsController.php

代码语言:javascript
运行
复制
public function detail($slug){
    $news = \App\News::active()->where('slug', $slug)->firstOrFail();
    
    $prev_news = \App\News::whereDate('date', '>', $news->date)->active()->orderBy('date', 'desc')->first();
    
    $next_news = \App\News::whereDate('date', '<', $news->date)->active()->orderBy('date', 'desc')->first();
}

web.php

代码语言:javascript
运行
复制
 Route::get('/news/{slug}', 'NewsController@detail')->name('news');

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-12-04 11:45:22

我找到了一个解决办法:

代码语言:javascript
运行
复制
$news = \App\News::active()->where('slug', $slug)->firstOrFail();

$prev_news = \App\News::withDescription()->where(function($query) use($news){
    $query->where(function($query) use($news){
        $query->whereDate('date', $news->date)->where('id', '<', $news->id);
    })->orWhereDate('date', '>', $news->date);
})->online()->orderBy('date', 'asc')->orderBy('id', 'desc')->active()->first();

$next_news = \App\News::withDescription()->where(function($query) use($news){
    $query->where(function($query) use($news){
        $query->whereDate('date', $news->date)->where('id', '>', $news->id);
    })->orWhereDate('date', '<', $news->date);
})->online()->orderBy('date', 'desc')->orderBy('id', 'asc')->active()->first();
票数 0
EN

Stack Overflow用户

发布于 2022-11-28 09:38:44

代码语言:javascript
运行
复制
$prev_news = $news->whereDate('date', '>', $news->date)->active()->orderBy('date', 'desc')->get();

$next_news = $news->whereDate('date', '<', $news->date)->active()->orderBy('date', 'desc')->get();

您使用了->first();这只返回一个值。因此,将其更改为get()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74598544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档