我无法在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条最后记录数据除外
答案 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)
$other_news = News::where('status','1')->orderby('created_at','DESC')->whereNotIn('id',$news_ids])->get();