为了账号安全,请及时绑定邮箱和手机立即绑定

仅显示 Laravel 5.8 中最新的产品类别

仅显示 Laravel 5.8 中最新的产品类别

PHP
一只名叫tom的猫 2021-06-12 11:09:10
我有三个模型:产品、类别、产品类别。一个产品可能有很多类别,有些类别可能有一个父类别。您可以在下面找到相关关系。我可以用foreach()循环显示所有类别,但我不想这样做。我只想显示类别,它必须是最新的。有没有办法只显示当前产品的父类别的最后一个类别?<div class="row">    @foreach ($products as $product)        @foreach ($product->categories as $cat)            {{ $cat->title }}        @endforeach    @endforeach</div>产品型号public function categories(){    return $this->belongsToMany(Category::class);}品类模型public function products(){    return $this->belongsToMany(Product::class);}public function subcategories(){    return $this->hasMany('\App\Category', 'parent_id');}public function parent(){    return $this->belongsTo('\App\Category', 'parent_id');}类别架构$table->increments('id');$table->string('title');$table->integer('parent_id')->nullable();类别_产品架构$table->increments('id');$table->integer('category_id')->unsigned();$table->integer('product_id')->unsigned();
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您可以在关系上使用查询构建器,如下所示:

$product->categories->orderBy('id', 'desc')->first();

这将从最近到最旧排序,您可以只获取第一条记录。


查看完整回答
反对 回复 2021-06-13
?
倚天杖

TA贡献1828条经验 获得超3个赞

在您的模型上使用特定方法

你的类别定义应该是这样的,对吧?


public function categories() {

    return $this->belongsToMany(Category::class);

}

所以,只需创建另一种方法来检索最新的。


public function latestCategory() {

    return $this->categories()->latest();

}

如果您需要最旧的类别,则应用相同的方法。


public function oldestCategory() {

    return $this->categories()->oldest();

}

仅使用类别关系定义

如果您不打算创建新方法,也可以应用不同的方法:


$this->categories()->latest();

或者


$this->categories()->oldest();

希望它会帮助你。祝你有美好的一天。


查看完整回答
反对 回复 2021-06-13
?
富国沪深

TA贡献1790条经验 获得超9个赞

你可以使用latest()方法

$product->categories->latest()->first();

或者,

$product->categories->orderBy('id', 'desc')->first();


查看完整回答
反对 回复 2021-06-13
  • 3 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信