使用 eloquent 关系 laravel 计数查询
count query using eloquent relation laravel
我有三个 table,分别是 category
、subcategory
和 product
。
category
有
id category_name
subcategory
有
id category_id sucategory_name
和product
table有
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)
我怎样才能达到这样的结果?
$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
.
间接引用了它的类别
我有三个 table,分别是 category
、subcategory
和 product
。
category
有
id category_name
subcategory
有
id category_id sucategory_name
和product
table有
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)
我怎样才能达到这样的结果?
$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
.