Laravel获取论坛分类下最近更新的3条主题帖问题求助
解决Laravel关联查询取分类下最新3条帖子的问题
你当前的代码里,take(3)默认按帖子主键ID正序(从小到大)取前3条,所以拿到的是ID≤3的旧数据。要获取最新的3条,需要先按更新时间(或创建时间)倒序排序,再取前3条,同时要移除闭包里多余的->get()(with关联查询不需要手动调用get())。
修改后的代码如下:
public function index() { $forums = Category::with(['posts' => function ($q) { // 按updated_at倒序取最新3条;若需按创建时间排序,替换为created_at即可 return $q->orderBy('updated_at', 'desc')->take(3); }])->get(); dd($forums); }
关键说明:
orderBy('updated_at', 'desc'):让帖子按更新时间从新到旧排序,确保取到的是最新内容;如果你的表没有updated_at字段,换成created_at也适用。- 移除闭包里的
->get():with方法会自动处理关联查询的执行和结果注入,手动调用get()会导致逻辑错误。
内容的提问来源于stack exchange,提问作者Sardor Kuchkarov
相关产品推荐
相关产品推荐

