Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

monicahq/monica

23656 stars
1 code files
View monicahq/monica on GitHub

database/migrations/2018_05_06_061227_external_countries.php

Open in GitHub
use App\Models\Contact\Address;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
 
class ExternalCountries extends Migration
{
public function up()
{
Schema::table('addresses', function (Blueprint $table) {
$table->char('country', 3)->after('country_id')->nullable();
});
 
Address::chunk(200, function ($addresses) {
foreach ($addresses as $addresse) {
$iso = DB::table('countries')->where('id', $addresse->country_id)->value('iso');
$addresse->update(['country' => mb_strtoupper($this->fixIso($iso))]);
}
});
 
Schema::table('addresses', function (Blueprint $table) {
$table->dropColumn('country_id');
});
Schema::dropIfExists('countries');
}
 
private function fixIso($iso)
{
switch ($iso) {
case 'ct':
// Cyprus
return 'CY';
break;
}
 
return $iso;
}
 
public function down()
{
Schema::table('addresses', function (Blueprint $table) {
$table->integer('country_id')->after('country')->nullable();
});
 
Schema::create('countries', function (Blueprint $table) {
$table->increments('id');
$table->string('iso');
$table->string('country');
});
 
Address::chunk(200, function ($addresses) {
foreach ($addresses as $addresse) {
$id = DB::table('countries')->where('iso', mb_strtolower($addresse->country))->value('id');
$addresse->update(['country_id' => $id]);
}
});
 
Schema::table('addresses', function (Blueprint $table) {
$table->dropColumn('country');
});
}
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.