laravel - 如何在 Laravel 中的另一个关系中获取 hasmany 关系
问题描述
如何在 Laravel 中的另一个关系中获取 hasmany 关系
我想获得带有产品选项的产品选项组
我做的
$try1 = Product::with(["optionGroups.options"])->find(1);
但这会返回所有组选项
我想获得仅包含产品选项的产品选项组
我希望它像
{ "title": "产品名称", “选项组”:[ { “名称”:“尺寸”, “选项”: [ { “名称”:“XL”, “价格”:1200 }, { “名称”:“L”, “价格”:1000 } ] } ] }
楷模
class Product extends Model
{
public function options()
{
return $this->hasMany(Option::class, 'product_id');
}
public function optionGroups()
{
return $this->belongsToMany(OptionGroup::class, 'options')->groupBy("id");
}
}
class Option extends Model
{
public function product()
{
return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id');
}
public function optionGroup()
{
return $this->belongsTo(\App\Models\OptionGroup::class, 'option_group_id', 'id');
}
}
class OptionGroup extends Model
{
public $table = 'option_groups';
public $fillable = [
'name'
];
public function options()
{
return $this->hasMany(Option::class, 'option_group_id');
}
}
Schema::create('products', function (Blueprint $table) {
$table->id('id');
$table->string('title');
});
Schema::create('options', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 127);
$table->double('price', 8, 2)->default(0);
$table->integer('product_id')->unsigned();
$table->integer('option_group_id')->unsigned();
});
Schema::create('option_groups', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 127);
});
请帮我
解决方案
Product::whereHas('optionGroups', function($query){
$query->with(['options']);
})->first();
推荐阅读
- swift - 嵌套 Cloudkit 查询未按正确顺序打印
- recursion - 为什么递归函数的时间复杂度是 2^n?
- java - @PostMapping 与多个 RequestBody
- r - R中的分组箱线图
- python - 如何让python EXE在后台运行?
- python-3.x - 使用 Behave 我想运行我所有的功能文件,但它会抛出错误 No steps directory 但通过 pycharm 运行相同
- typescript - 打字稿:确保在使用`as`关键字时指定所有接口属性
- highcharts - Highcharts,类型:列,x 轴线阻塞了列的某些部分,这使得一些接近 0 的值不可见
- r - (Anova)DCR 与使用 R 的子样本
- robotframework - 机器人框架:IF/ELSE - 在另一个关键字中使用关键字