通过 with relation Laravel Eloquent 查询只得到两张图片

get only two images by with relation Laravel Eloquent query

我试过使用这样的eloquent模型只得到两张图片

$data = Wedding::with(['weddingimage'=>function($q)use($req){
    $q->where('is_cover',0)
       ->limit(2);
    }])->withCount('weddingimage')
        ->limit(2)
        ->get();

但是在第一个循环中只得到两个图像意味着索引 0 而不是在下一个索引中意味着 1,2。 请帮帮我。 提前致谢

Laraval 没有内置此功能。

如果您在关系的预先加载中添加一个限制,它只会限制它找到的记录总数,所有父项 2 个,而不是每个父项 2 个,而即使是第一个父项也可能有超过 2 个图像.

但别担心,Jonas Staudenmeir 花时间开发缺少的每个父级限制,请参阅: https://github.com/staudenmeir/eloquent-eager-limit

用法:

您需要将特征应用到您的两个模型,在您的情况下,模型可能如下所示:

class WeddingImage extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

class Wedding extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;

    public function weddingimage() {
        return $this->hasMany(WeddingImage::class);
    }
}

然后简单地在您的预加载查询中链接 ->limit(2)(您似乎已经这样做了)。