这是我的代码:
模特:
public static function myWishlist(){
$id = Auth::id();
$book_id = Wishlist::where('user_id', $id)->pluck('book_id');
return DB::table('books')->whereIn('id', $book_id)->get();
控制器:
public function index(Request $request)
{$books = Wishlist::myWishlist()->paginate(20);
return view('wishlistCRUD.index', compact('books'))
->with('i', ($request->input('page', 1) - 1) * 5);
但它没有向我展示所有指定的书籍,而是说:
方法paginate不存在。
我也在模型中试过这个:
$book_id = Wishlist::where('user_id', $id)->pluck('book_id');
return Book::whereIn('id',$book_id)->get();
但是它返回了一个集合,我不知道如何在我的视图中显示它。
答案 0 :(得分:0)
获得结果后无法使用paginate。
你可以这样做:
public static function myWishlist() {
$id = Auth::id();
$book_id = Wishlist::where('user_id', $id)->pluck('book_id');
return Book::whereIn('id', $book_id);
}
public function index(Request $request) {
$books = Wishlist::myWishlist()->paginate(20);
return view('wishlistCRUD.index', compact('books'))
->with('i', ($request->input('page', 1) - 1) * 5);
}
答案 1 :(得分:0)
首先,您无需使用static function
eloquent already does that。
第二,你可以像这样使用local scopes:
型号:
public function scopeUserWishlist($query, $userID)
{
// Although a join would be nicer !
$book_ids = Wishlist::where('user_id', $userID)
->pluck('book_id');
return $query->whereIn('id', $book_ids);
}
控制器:
public function index(Request $request)
{
$books = Wishlist::userWishlist(Auth::id())
->paginate(20);
return view('wishlistCRUD.index')
->with('books', $books)
->with('i', ($request->input('page', 1) - 1) * 5);
}