J'essaie de créer une API qui renverra tous les enregistrements clients d'une base de données. Mais cela fournit des fonctionnalités de pagination et de filtrage. ,
La fonction de filtre est un paramètre de requête facultatif. Il n'est donc pas nécessaire de l'inclure dans les paramètres de la requête.
Mais j'ai un problème pour faire ça.
Voici la méthode d'indexation dans le fichier CustomerController
:
public function index(Request $request) { // Get how many item per page $itemPerPage = $request->query('per_page'); // SQL Query $customers = Customer::all(); // Filter data if (!empty($request->name)) { $customers = $customers->where('name', '=', $request->name); } // Return the result as JSON return new CustomerCollection($customers->paginate($itemPerPage)); }
Ou existe-t-il une meilleure façon de combiner la fonctionnalité de filtrage facultative avec la pagination ?
Merci.
Votre problème principal est cette ligne :
all()
方法立即将所有customers
记录作为Collection
返回,该集合没有->paginate( )
Méthodes : https://laravel.com/docs/9.x/collections#available-methods.Pour sélectionner un lien, utilisez la clause
->query()
方法或->when()
:Utilisation
::query()
代替::all()
:Utilisez la clause
->when()
: