Laravel雄辩的查询,多对多关系数据take()不起作用

Laravel雄辩的查询,多对多关系数据take()不起作用,laravel,eloquent,laravel-8,Laravel,Eloquent,Laravel 8,我有“产品”和“品牌”模式的多对多关系 我需要从有限(5种产品)的品牌获取数据,因此我的查询是 $brands = Brand::orderBy('order_by', 'asc')->where('status', 1)->with('product')->take(6)->whereHas('product', function ($product){ $product->take(5); })->get(); 此处$prod

我有“产品”和“品牌”模式的多对多关系 我需要从有限(5种产品)的品牌获取数据,因此我的查询是

  $brands = Brand::orderBy('order_by', 'asc')->where('status', 1)->with('product')->take(6)->whereHas('product', function ($product){
        $product->take(5);
    })->get();

此处
$product->take(5)
不适用于我,我获得与该品牌相关的所有数据

您可以安装它:

composer require staudenmeir/eloquent-eager-limit:"^1.0"
然后在您的模型中:

class Brand extends Model {
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
以及在产品模型中:

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


}
现在:当你加载你的关系。。。它应该返回您想要的结果:

$brands = Brand::orderBy('order_by', 'asc')->where('status', 1)->with(['product'=>function ($product){
            $product->take(5);
        }])->take(6)->get();

更多详细信息请参见:

我不确定它是否有效,但您可以尝试使用此
$product->limit(5)
limit在这里也不起作用