【问题标题】:Laravel paginate belongsToMany relationship?Laravel 分页属于ToMany 关系?
【发布时间】:2020-08-10 01:07:43
【问题描述】:

我想对我从我的关系中获得的结果进行分页。我有一个产品表/控制器、一个用户表/控制器和一个标记产品表。但是,我没有markedProducts 表,因为我实际上并不需要它。我使用此解决方案在我的用户模型中获取一个用户的所有标记产品:

public function markedProducts(){    
    return $this->belongsToMany('App\Product', 'products_marks');
}

我现在的问题是如何对结果进行分页我的第二个问题是如何获得标记产品表中每一行的 created_at 值?

因为我的解决方案只是退回标记的产品。但是,我想在用户标记产品时向他展示。

到目前为止,我有这个想法:

$markedProducts = DB::table('products_marks')->where('user_id', Auth::id())->orderBy('created_at', 'desc')->paginate(2);
$products = Product::whereIn('id', $markedProducts->lists('product_id'));

但是,->lists() 不再是一种方法,我实际上不想绕过 Laravel 方法,也不想循环通过我的分页来获取包含所有 product_id 的数组。

你们有什么好的和高性能的解决方案吗?

诚挚的问候,谢谢!

【问题讨论】:

    标签: php laravel eloquent pagination


    【解决方案1】:

    Auth::user() 将返回经过身份验证的用户。

    并使用关系方法markedProducts()获取产品的查询。

    然后是orderBy 数据透视表的列created_at

    最后,对这个雄辩的构建器应用分页。

    Auth::user()->markedProducts()->orderBy('products_marks.created_at', 'DESC')->paginate($limit);
    

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 2017-10-27
      • 1970-01-01
      • 2015-01-10
      • 2021-08-25
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      相关资源
      最近更新 更多