Laravel paginate принадлежит к многим отношениям? - PullRequest
0 голосов
/ 26 апреля 2020

Я хотел бы разбить на страницы свои результаты, полученные от моих отношений. У меня есть таблица продуктов / контроллер, таблица пользователей / контроллер и отмеченная таблица продуктов. Однако у меня нет помеченной таблицы «Продукты», потому что она мне на самом деле не нужна. Я использую это решение, чтобы получить все отмеченные продукты одного пользователя в моей модели пользователя:

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, и я не Я не хочу, чтобы я oop через мою нумерацию страниц получил массив со всеми product_id.

У вас, ребята, есть какое-нибудь хорошее и производительное решение?

С уважением и благодарностью!

1 Ответ

0 голосов
/ 26 апреля 2020

Auth :: user () вернет аутентифицированного пользователя.

И используйте метод отношений markedProducts(), чтобы получить запрос продуктов.

А затем orderBy столбец created_at сводной таблицы.

Наконец, примените paginate к этому красноречивому строителю.

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