запрос количества с использованием красноречивого отношения laravel

У меня есть три таблицы под названием category, subcategory а также product ,

category имеет

id       category_name

subcategory имеет

id      category_id     sucategory_name

а также product стол имеет

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');
}
}

и мой subcategory модель

<?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');
}
}

и наконец мой product модель

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

}

однако я отобразил все имена подкатегорий, которые принадлежат категории, выполнив это в моем контроллере

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

Я уже достиг результата ниже, на мой взгляд.

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

Теперь я просто хочу посчитать количество продуктов, которые относятся к подкатегории, например, для exampole

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

Как мне достичь такого результата?

0

Решение

$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";
}
}

Просто идея. Адаптируйтесь с вашим кодом просмотра.

Кстати, я думаю, что ваш product не должен содержать category_id потому что это уже косвенно относится к своей категории через subcategory_id,

0

Другие решения

Других решений пока нет …