gpt4 book ai didi

php - 使用 eloquent 关系 laravel 进行计数查询

转载 作者:行者123 更新时间:2023-11-29 22:02:40 25 4
gpt4 key购买 nike

我有三个表,分别为 categorysubcategoryproduct

类别

id       category_name

子类别

id      category_id     sucategory_name

产品表有

id     category_id      subcategory_id      productname

现在我想要的是,我想获取属于该子类别的产品总数。

我的categorymodel看起来像

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Relation;
use App\Subcategory;

class Category extends Model
{
protected $table = 'category';

public $timestamps = false;

public function subCategory(){

return $this->hasMany('App\Subcategory', 'category_id');
}
}

和我的子类别模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Subcategory extends Model
{
protected $table = 'subcategory';

public $timestamps = false;


public function products(){
return $this->hasMany('App\Products', 'subcategory_id');
}
}

最后是我的产品模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Products extends Model
{
protected $table = 'products';

}

但是我已经通过在 Controller 中这样做来显示属于该类别的所有子类别名称

 $categories = Category::with('subCategory')->get();

在我看来,我已经取得了以下结果。

category 1
subcategory 1
subcategory 2
subcategory 3
category 2
subcategory 1
subcategory 2
subcategory 3

现在我只想计算属于子类别的产品数量,例如

 category 1
subcategory 1 (20)
subcategory 2 (2)
subcategory 3 (3)
category 2
subcategory 1 (12)
subcategory 2 (11)
subcategory 3 (2)

我怎样才能达到这样的结果?

最佳答案

$categories = Category::with('subCategory')->get();
foreach ($categories as $category)
{
echo "{$category->category_name}\n";
foreach ($category->subCategory as $subcategory)
{
echo "\t{$subcategory->subcategory_name} ({$subcategory->products()->count()})\n";
}
}

只是一个想法。适应您的 View 代码。

顺便说一句,我认为您的产品不应包含category_id,因为它已经通过subcategory_id间接引用其类别。

关于php - 使用 eloquent 关系 laravel 进行计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32473436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com