O colectie de modele si comenzi elocvente pentru a obtine toata puterea GeoNames in Laravel.

Instalare

Adaugati ipalaus / geonames ca o cerinta la composer.json:

{“require”: {“ipalaus / geonames”: “3.0. *”}}

Nota : daca utilizati Laravel 5.1 puteti utiliza versiunea “ipalaus / geonames”: “2.0. *”.

Actualizati pachetele cu actualizarea compozitorului sau instalati cu instalarea compozitorului.

Odata ce ati instalat dependenta, trebuie sa inregistrati numele geografice in Laravel. Deschideti app / config / app.php si adaugati urmatorul furnizor in matricea furnizorilor dvs.:

„Ipalaus \ Geonames \ GeonamesServiceProvider”

Daca rulati acum php artisan, ar trebui sa vedeti un nou nume de nume geografic cu cateva comenzi legate de pachet. Pentru a continua cu instalarea, rulati urmatoarea comanda:

$ php artisan vendor: publish –provider = “Ipalaus \ Geonames \ GeonamesServiceProvider”

Aceasta va publica fisierul de configurare in config / geonames.php si migratiile catre baza de date / directorul de migratii. Pentru a putea controla ce se intampla, va recomandam sa declansati manual migrarea artizanala PHP.

Comenzi artizanale

Import

Comanda de import descarca fisierele necesare (configurabile in fisierul de configurare) si ruleaza un semanator pentru fiecare dintre ele. Sunt oferite cateva optiuni:

$ php geonames artisan: import [–country = “…”] [–development] [–fetch-only] [–wipe-files]

Importarea unei baze de date de productie poate dura ceva timp. Fisierul principal are ~ 1 GB, iar semanatoarea trebuie sa introduca ~ 6 milioane de randuri in timp ce creeaza indexuri pentru unele campuri. In mediile de dezvoltare, recomand cu tarie sa folositi optiunea –development si sa pastrati importurile complete pana la productie. Dimensiunile finale ale tabelului pot afecta, de asemenea, instanta locala MySQL.

Instalare

Publicati configuratia pachetului si rulati migrarile necesare. Puteti forta publicarea configului cu optiunea –force.

$ php geonames artisan: install [-f | –force]

Seminte

Comanda este numita de numele geonames: import. Extinde db: seed al lui Laravel, dar adauga optiuni suplimentare: cale si tara. Acest lucru se datoreaza dimensiunii fisierelor de importat si interogarilor pe care trebuie sa le rulam, numele de nume geografice: importul creeaza un nou Symfony \ Component \ Process \ Process pentru fiecare semanator.

Nu ar trebui sa apelati direct aceasta comanda.

Trunchia

Doriti sa taiati masa si sa incepeti de la zero? Alerga:

$ php geonames artisan: trunchiate

Modele elocvente

Continent

  • Relatii:
  • areMulte tari

Tara

  • Relatii:
  • apartine continentului
  • areMulte nume

Nume

  • Relatii:
  • apartine tarii, incarcate cu nerabdare la fiecare cerere

… si mai multe sa vina!

Integrarea la un model Elocvent actual

Integrarea ipalaus / geonames cu modelele dvs. elocvente existente la fel de usor ca:

<? php class User extends Eloquent {public function geoname () {return $ this-> belongTo (‘Ipalaus \ Geonames \ Eloquent \ Name’); }}

Acum puteti face un geoname_id pentru modelul dvs. de utilizator si obtineti rezultatele printr-un simplu:

$ utilizator = Utilizator :: cu (‘geoname’) -> find (1); echo $ user-> geoname-> name;

Relatia de apartenenta la tara din modelul Name este intotdeauna incarcata cu nerabdare. Aceasta inseamna ca puteti obtine numele tarii cu acelasi cod ca mai sus. Trebuie doar sa rasuna:

echo $ user-> geoname-> country-> name;

Puteti face un pas mai departe si incarcati cu nerabdare relatia geoname.country.continent (sau orice alta relatie existenta in modelele Geoname):

$ utilizator = Utilizator :: cu (‘geoname.country.continent’) -> find (1); echo $ user-> geoname-> country-> continent-> name;

GeoNames

Tabele de referinta

Cred ca numele tabelelor originale sunt urate si pot intra in conflict cu alte tabele dintr-un proiect curent. Am trecut la altele mai putin urate. Puteti verifica fisierele de migrare pentru a vedea numele utilizate pentru schema noastra de baze de date.

Geoames originale Eloquent geoname geonames_names alternatename geonames_alternate_names countryinfo geonames_countries iso_languagecodes geonames_language_codes admin1CodesAscii geonames_admin_divisions admin2Codes geonames_admin_subdivisions ierarhie geonames_onames geonames_onames