我想在日期前和下一次收到新闻订单。如果每天只有一条新闻,下面的代码可以正常工作。但不能在同一天处理多个新闻。
NewsController.php
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
Route::get('/news/{slug}', 'NewsController@detail')->name('news');
谢谢
发布于 2022-12-04 11:45:22
我找到了一个解决办法:
$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();
发布于 2022-11-28 09:38:44
$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()
https://stackoverflow.com/questions/74598544
复制相似问题