获取最后4条记录而不获得4条记录数据

时间:2019-03-19 01:18:12

标签: jquery laravel

我无法在laravel中编写查询以获取最后4条记录,而没有获得4条记录。

我的查询是

$news = News::where('status','1')->orderby('created_at','DESC')->latest('updated_at')->take(4)->get();

$other_news   = News::where('status','1')->orderby('created_at','DESC')->whereNotIn('id', [$news ->id])->get();

我想获取4条最后记录数据,但4条最后记录数据除外

2 个答案:

答案 0 :(得分:1)

这里的问题是[$ news-> id]。 $ news是一个集合,没有id属性。如果您只需要$ other_news的结果,我建议这样做:

$news = News::where('status','1')->orderby('created_at','DESC')->latest('updated_at')->take(4)->pluck('id'); 

$other_news   = News::where('status','1')->orderby('created_at','DESC')->whereNotIn('id', $news)->get();

如果您需要$ news和$ other_news的结果,我建议这样做:

$news = News::where('status','1')->orderby('created_at','DESC')->latest('updated_at')->take(4)->get();

$other_news   = News::where('status','1')->orderby('created_at','DESC')->whereNotIn('id', $news->pluck('id'))->get();

'pluck'可以用作查询的一部分,也可以用作集合的一部分,因此您可以在这里选择它。 'pluck'基本上获取所有ID(或您指定的任何列),并使用值创建一个数组。

答案 1 :(得分:0)

首先,您必须获得4条新闻

$news = News::where('status','1')->orderby('created_at','DESC')->latest('updated_at')->take(4)->get();

然后您必须使用pluck('column_name')函数仅获取ID

$news_ids=$news->pluck('id')->toArray();

然后在whereNotIn('id',array of ids here)

中传递此ID数组
$other_news   = News::where('status','1')->orderby('created_at','DESC')->whereNotIn('id',$news_ids])->get();