Php 具有关系列的Laravel数据透视表分组
型号项目:Php 具有关系列的Laravel数据透视表分组,php,json,laravel,Php,Json,Laravel,型号项目: public function addons() { return $this->belongsToMany(Addon::class); } public function items() { return $this->belongsToMany(Item::class); } public function addons() { return $this->hasMany('App\Addon'); } { "i
public function addons()
{
return $this->belongsToMany(Addon::class);
}
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
{
"id": "1",
"name": "Item 1",
"addon_categories": [{
"id": 1,
"name": "Addon Category 1",
"addons": [{
"id": 1,
"name": "Addon 1"
}, {
"id": 2,
"name": "Addon 2"
}]
}]
}
$items = Item::with('addons.addon_category')
->with(array('addons' => function ($query) {
$query->where('is_active', 1);
}))
->get();
{
"id": "1",
"name": "Item 1",
"addons": [{
"id": "1",
"name": "Addon 1",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "1"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}, {
"id": "2",
"name": "Addon 2",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "2"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}]
}
型号插件:
public function addons()
{
return $this->belongsToMany(Addon::class);
}
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
{
"id": "1",
"name": "Item 1",
"addon_categories": [{
"id": 1,
"name": "Addon Category 1",
"addons": [{
"id": 1,
"name": "Addon 1"
}, {
"id": 2,
"name": "Addon 2"
}]
}]
}
$items = Item::with('addons.addon_category')
->with(array('addons' => function ($query) {
$query->where('is_active', 1);
}))
->get();
{
"id": "1",
"name": "Item 1",
"addons": [{
"id": "1",
"name": "Addon 1",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "1"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}, {
"id": "2",
"name": "Addon 2",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "2"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}]
}
型号附加类别:
public function addons()
{
return $this->belongsToMany(Addon::class);
}
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
{
"id": "1",
"name": "Item 1",
"addon_categories": [{
"id": 1,
"name": "Addon Category 1",
"addons": [{
"id": 1,
"name": "Addon 1"
}, {
"id": 2,
"name": "Addon 2"
}]
}]
}
$items = Item::with('addons.addon_category')
->with(array('addons' => function ($query) {
$query->where('is_active', 1);
}))
->get();
{
"id": "1",
"name": "Item 1",
"addons": [{
"id": "1",
"name": "Addon 1",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "1"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}, {
"id": "2",
"name": "Addon 2",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "2"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}]
}
我有一个数据透视表addon\u item
(包含列id、addon\u id和item\u id)
我正在努力实现的目标:
项目集合,包含按AddonCategories分组的所有Addon
类似这样的内容:
public function addons()
{
return $this->belongsToMany(Addon::class);
}
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
{
"id": "1",
"name": "Item 1",
"addon_categories": [{
"id": 1,
"name": "Addon Category 1",
"addons": [{
"id": 1,
"name": "Addon 1"
}, {
"id": 2,
"name": "Addon 2"
}]
}]
}
$items = Item::with('addons.addon_category')
->with(array('addons' => function ($query) {
$query->where('is_active', 1);
}))
->get();
{
"id": "1",
"name": "Item 1",
"addons": [{
"id": "1",
"name": "Addon 1",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "1"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}, {
"id": "2",
"name": "Addon 2",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "2"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}]
}
到目前为止我所尝试的:
public function addons()
{
return $this->belongsToMany(Addon::class);
}
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
{
"id": "1",
"name": "Item 1",
"addon_categories": [{
"id": 1,
"name": "Addon Category 1",
"addons": [{
"id": 1,
"name": "Addon 1"
}, {
"id": 2,
"name": "Addon 2"
}]
}]
}
$items = Item::with('addons.addon_category')
->with(array('addons' => function ($query) {
$query->where('is_active', 1);
}))
->get();
{
"id": "1",
"name": "Item 1",
"addons": [{
"id": "1",
"name": "Addon 1",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "1"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}, {
"id": "2",
"name": "Addon 2",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "2"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}]
}
(我在addons.addon_类别中尝试了闭包函数和$query->groupBy,但没有成功-可能是因为我的方法不正确)
我用上述代码得到的输出:
public function addons()
{
return $this->belongsToMany(Addon::class);
}
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
{
"id": "1",
"name": "Item 1",
"addon_categories": [{
"id": 1,
"name": "Addon Category 1",
"addons": [{
"id": 1,
"name": "Addon 1"
}, {
"id": 2,
"name": "Addon 2"
}]
}]
}
$items = Item::with('addons.addon_category')
->with(array('addons' => function ($query) {
$query->where('is_active', 1);
}))
->get();
{
"id": "1",
"name": "Item 1",
"addons": [{
"id": "1",
"name": "Addon 1",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "1"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}, {
"id": "2",
"name": "Addon 2",
"addon_category_id": "1",
"pivot": {
"item_id": "1",
"addon_id": "2"
},
"addon_category": {
"id": "1",
"name": "Addon Category 1"
}
}]
}