繁体   English   中英

Laravel 分页属于ToMany 关系?

[英]Laravel paginate belongsToMany relationship?

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

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的数组。

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

亲切的问候,谢谢!

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

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

然后按orderBy表的created_at列排序。

最后,对这个 eloquent 构建器应用分页。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM