Laravel雄辩的查询,多对多关系数据take()不起作用
我有“产品”和“品牌”模式的多对多关系 我需要从有限(5种产品)的品牌获取数据,因此我的查询是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
$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在这里也不起作用