Laravel枢轴模型与另一个表的关系

问题描述

enter image description here

数据库说明:

  • 物品有很多层
  • 层只有一种类型(大小,选项或附件)
  • 类型与选项具有多对多关系
  • optionType具有多种尺寸和价格

问题: 在雄辩的查询中,我能够获取数据直到option_type,我不知道如何创建option_type数据透视模型与大小模型的关系。

口才查询:

$items = Item::with(['tiers' => function ($query) {
            $query->with(['type' => function($query) {
                $query->with('sizes')
                    ->with('options')
                    ->with('addons');
            }]);
        }])->where('id',1)->get();
        return $items;

我想要实现的目标: 我想急于加载带有大小的option_type,对于每个optiontype行,我可能都有大小及其价格。

问题: 当我编写查询时:

$query->with(['options' => function($query) {
    $query->with('sizes);
}])

基本上说选项与大小有关系,这是不对的,应该是optionType与大小有关系。我如何获取数据,以便显示每个optiontype_id,size_id和价格的记录。

类型模型:

class Type extends Model
{
    protected $table = 'types';

    public function options()
    {
        return $this->belongsToMany(Option::class);
    }
}

选项模型:

class Option extends Model
{
    public function type()
    {
        return $this->belongsToMany(Type::class);
    }
}

选项类型模型:

use Illuminate\Database\Eloquent\Relations\Pivot;

class OptionType extends Pivot
{
    protected $table = 'option_type';

    public function optiontypesize()
    {
        return $this->belongsToMany(Size::class,'option_type_size','size_id','option_type_id');
    }
}

尺寸模型:

class Size extends Model
{
    public function optiontypesize()
    {
        return $this->belongsToMany(OptionType::class,'option_type_id');
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)