Awesome
Lara-pnn
Lara-pnn is a laravel package which allows you to format your phone number in the new Ivorian format (change from 8 digits to 10 digits).
Note:
From January 31, 2021, Ivorian numbers will change to 10 digits, ARTCI has published a note to help with migration.
This package will be useful for existing applications with an Ivorian number database. Ivory Coast Diald code is +225
Installation
Require this package with composer.
composer require gabeta/lara-pnn
Laravel uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
Laravel without auto-discovery:
If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php
Gabeta\LaraPnn\laraPnnServiceProvider::class
And add this to your facades in app.php:
'LaraPnn' => Gabeta\LaraPnn\Facades\LaraPnn::class,
The package was designed for the Ivorian case but if you have a similar case
other than that of Côte d'Ivoire. This package handled it very well, you just have to publish and
modify the package configuration file. See more options in config/larapnn.php
Copy the package config to your local config with the publish command:
php artisan vendor:publish --provider="Gabeta\LaraPnn\laraPnnServiceProvider"
Usage
Prepare your model
So that your models can format your Ivorian numbers, the model must implement the following interface and trait:
use Gabeta\LaraPnn\InteractWithLaraPnn;
use Gabeta\LaraPnn\LaraPnnAbstract;
class YourModel extends Model implements LaraPnnAbstract
{
use InteractWithLaraPnn;
}
Then you must define the fields concerned by the migration.
use Gabeta\LaraPnn\InteractWithLaraPnn;
use Gabeta\LaraPnn\LaraPnnAbstract;
class YourModel extends Model implements LaraPnnAbstract
{
use InteractWithLaraPnn;
protected $pnnFields = [
'mobile' => ['mobile_field_name'],
'fix' => ['fix_field_name']
];
}
We check the eligibility of the number before migration based on the dial code
if the dial code value is in another field you must define with attribute $pnnDialCodeFields
:
use Gabeta\LaraPnn\InteractWithLaraPnn;
use Gabeta\LaraPnn\LaraPnnAbstract;
class YourModel extends Model implements LaraPnnAbstract
{
use InteractWithLaraPnn;
protected $pnnFields = [
'mobile' => ['mobile_field_name'],
'fix' => ['fix_field_name']
];
protected $pnnDialCodeFields = [
'mobile_field_name' => 'mobile_dial_code_field_name',
'fix_field_name' => 'fix_dial_code_field_name'
];
}
Basic usage: Migrate without change database value
You can make a basic use of it which will migrate your numbers without modifying the values in the database.
// Before use LaraPnn trait
$yourModel->mobile_field_name // 225 09 00 00 00
$yourModel->fix_field_name // 225 20 30 00 00
// After use LaraPnn trait
$yourModel->mobile_field_name // 225 07 09 00 00 00
$yourModel->fix_field_name // 225 27 20 30 00 00
Advanced usage: Database migration
For a migration of numbers in the database, the one-command package allows you to migrate all your numbers from a single mode.
php artisan larapnn:migrate YouModelNamepace\\YourModel
You also have a command that allows you to rollback
php artisan larapnn:rollback YouModelNamepace\\YourModel
You can add the take option to take records do you want:
php artisan larapnn:migrate YouModelNamepace\\YourModel --take=50000
php artisan larapnn:rollback YouModelNamepace\\YourModel --take=50000
You can add the skip option to skip the stats part (used if you are using a schedule job):
php artisan larapnn:migrate YouModelNamepace\\YourModel --skip
php artisan larapnn:rollback YouModelNamepace\\YourModel --skip