You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel查询仅部分生效,求助按ID排序、取最后10条及Blade展示方案

解决Laravel查询排序和条数限制问题,并在Blade中正确展示

我来帮你捋捋这个问题哈——核心问题出在后端的查询逻辑没加排序和条数限制,先把这部分修正,再配合Blade模板就能正确展示数据了。

第一步:修正后端Eloquent查询

先明确两种常见场景,对应不同的查询写法:

场景1:获取带分类关联的最后10条产品(按ID倒序)

在控制器里调整查询,加上排序和条数限制:

$products = Product::with('category') // 预加载分类关联,避免N+1查询问题
    ->orderBy('id', 'desc') // 按ID倒序,取最后插入的10条产品
    ->take(10) // 限制只返回10条数据
    ->get();

// 将数据传递到Blade模板
return view('your-template-name', compact('products'));

场景2:获取某个分类下的最后10条产品

如果是针对单个分类的产品,要用关联约束的写法:

$category = Category::with(['products' => function($query) {
    $query->orderBy('id', 'desc')->take(10);
}])->find($targetCategoryId);

return view('your-template-name', compact('category'));

额外提醒:确保你的模型关联已经正确定义:

  • Product模型中:
public function category()
{
    return $this->belongsTo(Category::class);
}
  • Category模型中:
public function products()
{
    return $this->hasMany(Product::class);
}

第二步:在Blade模板中展示数据

对应场景1:展示带分类的10条产品

循环遍历数据,同时处理分类可能为空的情况(避免报错):

<div class="product-grid">
    @foreach($products as $product)
        <div class="product-card">
            <h3>{{ $product->name }}</h3>
            <p>所属分类:{{ optional($product->category)->name ?? '未分类' }}</p>
            <p>价格:¥{{ $product->price }}</p>
        </div>
    @endforeach
</div>

对应场景2:展示单个分类下的10条产品

先展示分类信息,再循环产品列表:

<div class="category-page">
    <h2>{{ $category->name }}</h2>
    <div class="category-product-list">
        @foreach($category->products as $product)
            <div class="product-item">
                <h4>{{ $product->name }}</h4>
                <p>库存:{{ $product->stock }}</p>
            </div>
        @endforeach
    </div>
</div>

关键细节说明

  • orderBy('id', 'desc')是按ID从大到小排序,如果你要取最早的10条产品,把desc改成asc即可。
  • take(10)和limit(10)功能完全一致,选哪个都可以,都是限制返回条数。
  • 用with('category')预加载关联是为了提升性能,避免循环中重复查询数据库,这个好习惯一定要保持~

内容的提问来源于stack exchange,提问作者mafortis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:50:45