如何排除Laravel中的特定行?

时间:2017-12-04 08:57:21

标签: php mysql sql-order-by laravel-5.4

我正在尝试从我的数据库中返回信息,但我想输出最新消息,而不是其他消息。

我设法使用以下代码获取最新消息

$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。

3 个答案:

答案 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个查询