Kita akan membuat fitur untuk mendapatkan informasi tentang transaksi dan saldo pengguna dengan memanfaatkan lazy loading, map, filter, dan reduce.
Buat folder app/Models/User.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'balance'];
public function transactions()
{
return $this->hasMany(Transaction::class);
}
}
Buat folder app/Models/Transaction.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Transaction extends Model
{
protected $fillable = ['user_id', 'amount', 'description'];
public function user()
{
return $this->belongsTo(User::class);
}
}
Penggunaan Lazy Loading dan Map untuk Mendapatkan Nama Penuh Pengguna pada Controller
use App\Models\User;
public function getUserNames()
{
$users = User::get();
// Lazy loading untuk mendapatkan nama lengkap
$names = $users->map(function ($user) {
return $user->first_name . ' ' . $user->last_name;
});
return $names;
}
Penggunaan Filter untuk Menyaring Transaksi dengan Jumlah Tertentu pada Controller
use App\Models\Transaction;
public function getTransactionsWithAmount($amount)
{
$transactions = Transaction::where('amount', '>', $amount)->get();
// Filter transaksi yang memiliki jumlah di atas ambang batas
$filteredTransactions = $transactions->filter(function ($transaction) use ($amount) {
return $transaction->amount > $amount;
});
return $filteredTransactions;
}
Penggunaan Reduce untuk Menghitung Saldo Total Pengguna pada Controller
use App\Models\User;
public function getTotalBalance()
{
$users = User::get();
// Menggunakan reduce untuk menghitung saldo total
$totalBalance = $users->reduce(function ($carry, $user) {
return $carry + $user->balance;
}, 0);
return $totalBalance;
}