问题描述
数据库说明:
- 物品有很多层
- 层只有一种类型(大小,选项或附件)
- 类型与选项具有多对多关系
- 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 (将#修改为@)