Laravel 5.4:高效统计职位搜索结果各筛选维度的记录数
Hey there! Let's break down how to tally up your 150 web developer results across location, gender, nationality, and other filters without the hassle of manual counting (which is super error-prone and slow). The best approach depends on whether you control the backend/database or only have access to the frontend:
If You Control the Backend/Database
This is the most accurate and efficient route—you’re working directly with the source data, so no guesswork:
Run targeted aggregated SQL queries
Instead of pulling all 150 results first, write queries that count exactly what you need. For example:- To count jobs based in the US and Philippines:
SELECT location, COUNT(*) AS job_count FROM job_postings WHERE title LIKE '%web developer%' AND location IN ('USA', 'Philippines') GROUP BY location; - To count male or unfiltered gender roles:
SELECT gender, COUNT(*) AS job_count FROM job_postings WHERE title LIKE '%web developer%' AND gender IN ('Male', 'Unspecified') GROUP BY gender; - For nationality counts (US, Germany, Philippines):
SELECT nationality, COUNT(*) AS job_count FROM job_postings WHERE title LIKE '%web developer%' AND nationality IN ('USA', 'Germany', 'Philippines') GROUP BY nationality;
- To count jobs based in the US and Philippines:
Include aggregation data in your search API response
When your frontend requests the 150 web developer results, have the backend calculate and return aggregated stats alongside the list. For example, add anaggregationsobject to the API response:{ "results": [...150 job objects...], "aggregations": { "location_counts": {"USA": 45, "Philippines": 22}, "gender_counts": {"Male": 38, "Unspecified": 76}, "nationality_counts": {"USA": 30, "Germany": 18, "Philippines": 25} } }This way, your frontend can display the stats instantly without extra work.
If You Only Have Frontend Access (Third-Party Site)
If you’re using someone else’s job board and can’t touch the backend, use these browser-based tools:
Scrape with JavaScript in the browser console
Most job boards render each listing as an HTML element with identifiable classes or data attributes. Here’s a script you can tweak for your page:// Grab all job listing elements (adjust the selector to match your page) const jobCards = document.querySelectorAll('.job-listing'); // Initialize your target stats const stats = { locations: { USA: 0, Philippines: 0 }, genders: { Male: 0, Unspecified: 0 }, nationalities: { USA: 0, Germany: 0, Philippines: 0 } }; // Loop through each job card and tally jobCards.forEach(card => { // Extract location (adjust selector/text extraction as needed) const location = card.querySelector('.location-text').textContent.trim(); if (stats.locations[location]) stats.locations[location]++; // Extract gender const gender = card.querySelector('.gender-tag').textContent.trim(); if (stats.genders[gender]) stats.genders[gender]++; // Extract nationality const nationality = card.querySelector('.nationality-info').textContent.trim(); if (stats.nationalities[nationality]) stats.nationalities[nationality]++; }); // Log the results to the console console.log('Filter Stats:', stats);Note: If the site uses pagination, make sure to load all 150 results first (click "Load More" until everything is visible) before running the script.
Export to a spreadsheet for analysis
If the site lets you export results as CSV/Excel, use spreadsheet functions to count:- For location counts:
=COUNTIF(A:A, "USA")(replace A:A with your location column) - For gender counts:
=COUNTIF(B:B, "Male") + COUNTIF(B:B, "Unspecified") - For nationality counts:
=COUNTIF(C:C, "Germany")
- For location counts:
Quick Tips
- Skip manual counting: Even 150 entries are easy to miscount—automate whenever possible.
- Handle edge cases: Make sure your queries/scripts account for variations like "United States" vs "USA" (standardize values first if needed).
内容的提问来源于stack exchange,提问作者RayzorMamon

