Php Laravel分页数据透视表

Php Laravel分页数据透视表,php,laravel,pivot-table,Php,Laravel,Pivot Table,我有包含自定义产品的集合,我需要对这些集合产品进行分页,但收到错误消息 数据 通过这个查询,我可以获得我的收藏和它的产品,但我无法对产品进行分页 $collection=collection::where('slug',$slug)->where('status', “活动”)->带('products')->first() 通过此查询,我收到错误消息 $collection=Product::with('collections')->whereHas('collections'), 函数($q

我有包含自定义产品的集合,我需要对这些集合产品进行分页,但收到错误消息

数据
  • 通过这个查询,我可以获得我的收藏和它的产品,但我无法对产品进行分页
  • $collection=collection::where('slug',$slug)->where('status', “活动”)->带('products')->first()

  • 通过此查询,我收到错误消息
  • $collection=Product::with('collections')->whereHas('collections'), 函数($query)使用($slug){$query->where('slug', $slug)->其中('status','active')->first();})

    错误 代码
    产品型号

    public function collections()
        {
            return $this->belongsToMany(CollectionProduct::class, 'product_id');
        }
    
    public function collection(){
            return $this->belongsToMany(CollectionProduct::class);
        }
    
        public function products(){
            return $this->belongsToMany(Product::class, 'collection_products', 'collection_id', 'product_id');
        }
    
    public function collection()
        {
            return $this->belongsTo(Collection::class, 'collection_id','id');
        }
    
    收集模式

    public function collections()
        {
            return $this->belongsToMany(CollectionProduct::class, 'product_id');
        }
    
    public function collection(){
            return $this->belongsToMany(CollectionProduct::class);
        }
    
        public function products(){
            return $this->belongsToMany(Product::class, 'collection_products', 'collection_id', 'product_id');
        }
    
    public function collection()
        {
            return $this->belongsTo(Collection::class, 'collection_id','id');
        }
    
    CollectionProduct model

    public function collections()
        {
            return $this->belongsToMany(CollectionProduct::class, 'product_id');
        }
    
    public function collection(){
            return $this->belongsToMany(CollectionProduct::class);
        }
    
        public function products(){
            return $this->belongsToMany(Product::class, 'collection_products', 'collection_id', 'product_id');
        }
    
    public function collection()
        {
            return $this->belongsTo(Collection::class, 'collection_id','id');
        }
    
    控制器
    默认查询

    问题:
  • 如何获得具有分页功能的收藏产品
  • 两件事:

    您正试图在此行的关系查询中调用
    first()
    方法:

    $collection=Product::with('collections')->whereHas('collections',function($query)use($slug){$query->where('slug',$slug)->where('status','active')->first();})

    方法
    first()
    get()
    用于执行查询,因此您应该将它们放在雄辩方法链的末尾:

    $collection = Product::with('collections')
                         ->whereHas('collections', function($query) use($slug) { 
                             $query->where('slug', $slug)->where('status', 'active'); 
                         })
                         ->get();
    

    但是,如果要对产品列表进行分页,那么真正需要的是
    paginate()
    方法:

    $collection = Product::with('collections')
                         ->whereHas('collections', function($query) use($slug) { 
                             $query->where('slug', $slug)->where('status', 'active'); 
                         })
                         ->paginate(20);   // will return 20 products per page
    

    另外,
    Product
    模型上的
    collections()
    方法将
    Product\u id
    列为联接表,并且正在联接到
    CollectionProduct
    模型,而不是
    Collection
    模型

    对于您的
    产品
    型号,请尝试以下操作:

    public function collections()
    {
        return $this->belongsToMany(Collection::class, 'collection_products', 'product_id', 'collection_id');
    }
    

    我使用下面的代码,工作得很好

    获得产品的第一步

    $product = Product()->find($product_id); 
    
    然后我会收集和分页

    $collections = Product::find($product_id)->collections->paginate(20); 
    

    例如,我在本文中使用了上述代码。

    它返回
    SQLSTATE[42S02]:找不到基表或视图:1146表“shopping.product_id”不存在(SQL:select count(*)作为存在的
    products`中的聚合(在
    collection\u products
    id
    id
    =
    product\u id
    collection\u products\u id
    中选择*内部连接
    产品
    id
    =
    产品id
    产品id
    slug
    =测试和
    状态
    =ACTIVE)ve)`@mafortis您能发布每个模型的表定义吗?将它们添加到您上面的问题中。@mafortis nvm,我想我找到了问题所在。请查看我的更新答案。谢谢,我删除了我的解决方案,将接受您的解决方案