我正在尝试从我的数据库中返回信息,但我想输出最新消息,而不是其他消息。
我设法使用以下代码获取最新消息
$finalNews = News::find(DB::table('news')->max('id'));
但是我还有另一个变量,它使用以下代码返回News
表中的所有行
$news = News::orderBy('id','desc')->get();
我想排除等于$finalNews
的新闻行
在控制器的末尾,我返回带有以下数据的视图
return view('news', ['news' => $news, 'finalNews' => $finalNews]);
如何排除上一条新闻?我正在使用Laravel和MySQL。
答案 0 :(得分:3)
尝试使用以下代码
$finalNews = News::find(DB::table('news')->max('id'));
$news = News::where('id','<>',$finalNews->id)->orderBy('id','desc')->get();
答案 1 :(得分:1)
从新闻列表中排除最新消息的ID
$finalNews = News::find(DB::table('news')->max('id'));
$latestId = $finalNews->id;
$news = News::where('id','!=',$latestId)
->orderBy('id','desc')
->get();
答案 2 :(得分:1)
首先,获取所有新闻
$news = News::orderBy('id','desc')->get();
然后,从$ news
中弹出最后一项(最新消息)$latest_news = $news->pop();
https://laravel.com/docs/5.5/collections#method-pop
在这种情况下无需使用2个查询