chrko/german-central-bank-bundle
Installation
composer require chrko/german-central-bank-bundle
Add to config/app.php under providers:
Chrko\GermanCentralBankBundle\GermanCentralBankServiceProvider::class,
Publish Config
php artisan vendor:publish --provider="Chrko\GermanCentralBankBundle\GermanCentralBankServiceProvider"
Configure config/german-central-bank.php with your database connection and table names.
First Use Case Run the import command to fetch and store the latest bank data:
php artisan german-central-bank:import
Verify data in the bank_numbers table (default).
Scheduled Imports
Add to app/Console/Kernel.php:
$schedule->command('german-central-bank:import')->dailyAt('03:00');
Querying Bank Data
Use the BankNumber facade or service:
use Chrko\GermanCentralBankBundle\Facades\BankNumber;
$bank = BankNumber::findByBic('DEUTDEBBXXX');
$banks = BankNumber::where('city', 'Berlin')->get();
Custom Models
Extend the default BankNumber model:
namespace App\Models;
use Chrko\GermanCentralBankBundle\Models\BankNumber as BaseBankNumber;
class BankNumber extends BaseBankNumber {
public function accounts() {
return $this->hasMany(Account::class);
}
}
Validation Validate bank data in forms:
use Chrko\GermanCentralBankBundle\Rules\ValidBankNumber;
$request->validate([
'bank_bic' => ['required', new ValidBankNumber],
]);
Large Dataset
The bank file (~100MB) may cause memory issues. Use --chunk flag:
php artisan german-central-bank:import --chunk=1000
Database Schema
Ensure your bank_numbers table matches the bundle’s migrations. Run:
php artisan migrate
if needed.
Rate Limiting The central bank’s API may block requests if called too frequently. Cache results:
Cache::remember('bank_numbers', now()->addDays(7), function() {
return BankNumber::all();
});
Custom Fields Add computed properties to the model:
public function getFullNameAttribute() {
return "{$this->bank_name} ({$this->bank_code})";
}
Testing Mock the service for unit tests:
$this->app->instance(
\Chrko\GermanCentralBankBundle\GermanCentralBank::class,
Mockery::mock()
);
Logging Enable verbose output for debugging:
php artisan german-central-bank:import --verbose
Extensions Override the importer for custom logic:
namespace App\Services;
use Chrko\GermanCentralBankBundle\Services\BankImporter;
class CustomBankImporter extends BankImporter {
protected function transformRow(array $row) {
// Custom logic
return parent::transformRow($row);
}
}
Bind it in AppServiceProvider:
$this->app->bind(
\Chrko\GermanCentralBankBundle\Contracts\BankImporter::class,
App\Services\CustomBankImporter::class
);
How can I help you explore Laravel packages today?