Laravel Eloquent与条件的双重关系

时间:2016-11-07 21:06:58

标签: database laravel eloquent relationship

我有三个模型,其中包含以下数据:

  1. 产品

    • ID
    • 名称
    • 描述
  2. 变体

    • ID
    • 颜色
    • 私有
    • PRODUCT_ID
  3. 图像

    • URL
    • variant_id
  4. 所以关系是:

    • 产品有多种变种
    • Variant hasMany Images

    我需要获取所有Variants的集合,包括父Product,因为我还需要它的名称并包含与Variant相关的图像,条件(在Variant上) - > where(' type& #39;,' OPT')和 - > where(' private',false)。

    我尝试使用原始SQL查询,但我需要在刀片模板中循环使用Variant的图像,因此我需要一个集合。如何在不运行太多查询的情况下将所有内容放在一起?

1 个答案:

答案 0 :(得分:2)

确保您的Variant型号上有这些关系:

public function product()
{
    return $this->belongsTo(Product::class);
}

public function images()
{
    return $this->hasMany(Image::class);
}

然后你可以这样做:

$collection = Variant::with('product', 'images')
    ->where('type', 'OPT')
    ->where('private', false)
    ->get();