<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* @property mixed name
* @method static create(array $array)
* @method static cursor()
* @method static where(string $string, string $uid)
* @method static count()
* @method static offset($start)
* @method static whereLike(string[] $array, $search)
* @method static find(mixed $country_code)
*/
class Country extends Model
{
protected $table = 'countries';
protected $fillable = ['name', 'iso_code', 'country_code', 'status'];
public static function boot()
{
parent::boot();
// Create uid when creating list.
static::creating(function ($item) {
// Create new uid
$uid = uniqid();
while (self::where('uid', $uid)->count() > 0) {
$uid = uniqid();
}
$item->uid = $uid;
$item->status = true;
});
}
/**
* get iso code using country
*
* @param $country
*
* @return mixed
*/
public static function getIsoCode($country)
{
return self::where('name', $country)->first()->iso_code;
}
/**
* @var array
*/
protected $casts = [
'status' => 'boolean',
];
/**
* get route key by uid
*
* @return string
*/
public function getRouteKeyName(): string
{
return 'uid';
}
/**
* @return string
*/
public function __toString(): string
{
return $this->name;
}
}