Skip to content

Instantly share code, notes, and snippets.

@JPeer264
Created April 20, 2016 09:16
Show Gist options
  • Save JPeer264/964a28e0b8920f1719f3ac2d01299a28 to your computer and use it in GitHub Desktop.
Save JPeer264/964a28e0b8920f1719f3ac2d01299a28 to your computer and use it in GitHub Desktop.
Laravel Countries for Lumen
<?php
if ( ! function_exists('config_path'))
{
/**
* Get the configuration path.
*
* @param string $path
* @return string
*/
function config_path($path = '')
{
return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
}
}
<?php
require_once __DIR__.'/../vendor/autoload.php';
try {
(new Dotenv\Dotenv(__DIR__.'/../'))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
//
}
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
$app->withFacades();
// $app->withEloquent();
class_alias('Webpatser\Countries\CountriesFacade', 'Countries');
class_alias('Illuminate\Support\Facades\Config', 'Config');
/*
|--------------------------------------------------------------------------
| Register Container Bindings
|--------------------------------------------------------------------------
|
| Now we will register a few bindings in the service container. We will
| register the exception handler and the console kernel. You may add
| your own bindings here if you like or you can make another file.
|
*/
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
$app->singleton(
Illuminate\Contracts\Console\Kernel::class,
App\Console\Kernel::class
);
/*
|--------------------------------------------------------------------------
| Register Middleware
|--------------------------------------------------------------------------
|
| Next, we will register the middleware with the application. These can
| be global middleware that run before and after each request into a
| route or middleware that'll be assigned to some specific routes.
|
*/
// $app->middleware([
// App\Http\Middleware\ExampleMiddleware::class
// ]);
// $app->routeMiddleware([
// 'auth' => App\Http\Middleware\Authenticate::class,
// ]);
/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
|
| Here we will register all of the application's service providers which
| are used to bind services into the container. Service providers are
| totally optional, so you are not required to uncomment this line.
|
*/
// $app->register(App\Providers\AppServiceProvider::class);
// $app->register(App\Providers\AuthServiceProvider::class);
// $app->register(App\Providers\EventServiceProvider::class);
$app->register(Webpatser\Countries\CountriesServiceProvider::class);
/*
|--------------------------------------------------------------------------
| Load The Application Routes
|--------------------------------------------------------------------------
|
| Next we will include the routes file so that they can all be added to
| the application. This will provide all of the URLs the application
| can respond to, as well as the controllers that may handle them.
|
*/
$app->group(['namespace' => 'App\Http\Controllers'], function ($app) {
require __DIR__.'/../app/Http/routes.php';
});
return $app;
{
"name": "laravel/lumen",
"description": "The Laravel Lumen Framework.",
"keywords": ["framework", "laravel", "lumen"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.5.9",
"laravel/lumen-framework": "5.2.*",
"vlucas/phpdotenv": "~2.2",
"webpatser/laravel-countries": "^1.4"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"phpunit/phpunit": "~4.0"
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php"
]
},
"autoload-dev": {
"classmap": [
"tests/",
"database/"
]
}
}
<?php
use Illuminate\Database\Migrations\Migration;
class SetupCountriesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// Creates the users table
Schema::create('Countries', function($table)
{
$table->integer('id')->index();
$table->string('capital', 255)->nullable();
$table->string('citizenship', 255)->nullable();
$table->string('country_code', 3)->default('');
$table->string('currency', 255)->nullable();
$table->string('currency_code', 255)->nullable();
$table->string('currency_sub_unit', 255)->nullable();
$table->string('currency_symbol', 3)->nullable();
$table->string('full_name', 255)->nullable();
$table->string('iso_3166_2', 2)->default('');
$table->string('iso_3166_3', 3)->default('');
$table->string('name', 255)->default('');
$table->string('region_code', 3)->default('');
$table->string('sub_region_code', 3)->default('');
$table->boolean('eea')->default(0);
$table->string('calling_code', 3)->nullable();
$table->string('flag', 6)->nullable();
$table->primary('id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('Countries');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
class CharifyCountriesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('Countries', function($table)
{
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY country_code CHAR(3) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY iso_3166_2 CHAR(2) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY iso_3166_3 CHAR(3) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY region_code CHAR(3) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY sub_region_code CHAR(3) NOT NULL DEFAULT ''");
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('Countries', function($table)
{
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY country_code VARCHAR(3) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY iso_3166_2 VARCHAR(2) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY iso_3166_3 VARCHAR(3) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY region_code VARCHAR(3) NOT NULL DEFAULT ''");
DB::statement("ALTER TABLE " . DB::getTablePrefix() . 'Countries' . " MODIFY sub_region_code VARCHAR(3) NOT NULL DEFAULT ''");
});
}
}
<?php
use Illuminate\Database\Seeder;
class CountriesSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//Empty the countries table
DB::table('Countries')->delete();
//Get all of the countries
$countries = Countries::getList();
foreach ($countries as $countryId => $country){
DB::table('countries')->insert(array(
'id' => $countryId,
'capital' => ((isset($country['capital'])) ? $country['capital'] : null),
'citizenship' => ((isset($country['citizenship'])) ? $country['citizenship'] : null),
'country_code' => $country['country-code'],
'currency' => ((isset($country['currency'])) ? $country['currency'] : null),
'currency_code' => ((isset($country['currency_code'])) ? $country['currency_code'] : null),
'currency_sub_unit' => ((isset($country['currency_sub_unit'])) ? $country['currency_sub_unit'] : null),
'full_name' => ((isset($country['full_name'])) ? $country['full_name'] : null),
'iso_3166_2' => $country['iso_3166_2'],
'iso_3166_3' => $country['iso_3166_3'],
'name' => $country['name'],
'region_code' => $country['region-code'],
'sub_region_code' => $country['sub-region-code'],
'eea' => (bool)$country['eea'],
'calling_code' => $country['calling_code'],
'currency_symbol' => ((isset($country['currency_symbol'])) ? $country['currency_symbol'] : null),
'flag' =>((isset($country['flag'])) ? $country['flag'] : null),
));
}
}
}
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call('CountriesSeeder');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment