[英]count query using eloquent relation 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
現在我只想計算屬於子類別的產品數量,例如
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";
}
}
只是一個主意。 適應您的視圖代碼。
順便說一句,我認為您的product
不應包含category_id
因為它已經通過subcategory_id
間接引用了其類別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.