මොඩියුලය 7

විකුණුම් වාර්තා සහ Eloquent Queries


1 Eloquent Query Builder හි බලය

Eloquent ORM මගින් සරල දත්ත ලබාගැනීම් වලට අමතරව, සංකීර්ණ SQL විමසුම් (queries) ලිවීමට අවශ්‍ය සියලුම පහසුකම් සපයයි. වාර්තා ජනනය කිරීමේදී, දත්ත පෙරීම (filtering), කාණ්ඩ කිරීම (grouping), සහ සමූහ ශ්‍රිත (aggregates) යෙදීම අත්‍යවශ්‍ය වේ.

බහුලව භාවිතා වන Methods:
  • where('column', 'operator', 'value'): නිශ්චිත කොන්දේසියකට අනුව දත්ත පෙරීම.
  • whereBetween('column', [start, end]): දින හෝ අගයන් පරාසයකට අනුව දත්ත පෙරීම.
  • with('relationship'): N+1 ගැටළුව විසඳීමට Eager Loading.
  • latest() / oldest(): දිනයට අනුව දත්ත පිළිවෙල කිරීම.
  • sum('column'), count(), avg('column'): සමූහ ශ්‍රිත (Aggregates).
2 Controller තුළ වාර්තා ජනනය කිරීම

වාර්තා පිටුව සඳහා අපට වෙනම Controller එකක් (`ReportController`) සහ Route එකක් නිර්මාණය කළ හැක. පරිශීලකයා විසින් සපයන දින පරාසය (`start_date`, `end_date`) Request එකෙන් ලබාගෙන, එම දත්ත අනුව Eloquent query එක ගොඩනැගිය යුතුය.

ReportController උදාහරණය:
// In ReportController.php use App\Models\Sale; use Illuminate\Http\Request; class ReportController extends Controller { public function index(Request $request) { $startDate = $request->input('start_date', now()->startOfMonth()); $endDate = $request->input('end_date', now()); $sales = Sale::with('user') ->whereBetween('created_at', [$startDate, $endDate]) ->latest() ->get(); $totalRevenue = $sales->sum('total'); return view('reports.index', compact('sales', 'totalRevenue', 'startDate', 'endDate')); } }

⭐ ප්‍රායෝගික පැවරුම: දින පරාස වාර්තා පිටුවක් නිර්මාණය කිරීම

පියවර 1: `ReportController` සහ Route සෑදීම

Command Prompt එකේ පහත විධානය ක්‍රියාත්මක කරන්න:

php artisan make:controller ReportController

`routes/web.php` ගොනුවේ, මෙම controller එකේ `index` method එකට යොමුවන නව route එකක් සාදන්න.

// In routes/web.php use App\Http\Controllers\ReportController; Route::get('/reports', [ReportController::class, 'index']) ->middleware(['auth']) ->name('reports.index');

පියවර 2: Controller Logic එක සම්පූර්ණ කිරීම

ඉහත උදාහරණයේ පෙන්වා ඇති පරිදි, `ReportController` හි `index` method එක තුළ, request එකෙන් එන දින පරාසයට අදාළ විකුණුම් (`Sales`) දත්ත ලබාගෙන, මුළු ආදායම (`totalRevenue`) ගණනය කර, එම දත්ත view එකට යැවීමට කේතය ලියන්න.

පියවර 3: වාර්තා සඳහා View එක (`reports/index.blade.php`) සෑදීම

`resources/views/reports/` ෆෝල්ඩරය තුළ `index.blade.php` නමින් නව ගොනුවක් සාදන්න. මෙම ගොනුව තුළ පහත අංග ඇතුළත් විය යුතුය:

<!-- In reports/index.blade.php --> <x-app-layout> <!-- Date filter form --> <form method="GET" action="{{ route('reports.index') }}"> ... </form> <!-- Summary Cards --> <div>Total Revenue: {{ $totalRevenue }}</div> <!-- Sales Table --> <table> @foreach($sales as $sale) <tr> <td>{{ $sale->id }}</td> <td>{{ $sale->created_at->format('Y-m-d') }}</td> <td>{{ $sale->user->name }}</td> <td>{{ $sale->total }}</td> </tr> @endforeach </table> </x-app-layout>

මෙම පිටුව නිර්මාණය කිරීමෙන් පසු, ඔබට ඕනෑම කාල සීමාවකට අදාළ විකුණුම් දත්ත පහසුවෙන් විශ්ලේෂණය කර, ව්‍යාපාරය පිළිබඳව වැදගත් තොරතුරු ලබාගත හැකි වනු ඇත.

‹‹ පෙර මොඩියුලය (Module 6) ඊළඟ මොඩියුලය (Module 8) ››