devnix/belfiore-code

意大利贝尔菲奥雷代码和外国地区代码的序列化数据

0.2.1 2021-12-13 07:22 UTC

This package is auto-updated.

Last update: 2024-09-13 13:33:18 UTC


README

Join the chat at https://gitter.im/DevNIX/belfiore-code

官方意大利贝尔菲奥雷代码列表(地籍代码),代表一个comune

更新

要更新数据库,您必须克隆项目并安装dev-dependencies。然后,控制台将可用以下载和转储标准化数据集

composer install
bin/console update

并且一切就绪。

无论如何,如果您认为抓取的数据已过时,请提交问题。我会尽快更新新数据。

使用方法

安装

PHP

composer require devnix/belfiore-code

序列化数据

您可以在任何语言的dist/文件夹中获取最新序列化数据库(comunes和外国地区)的CSV、JSON、XML和YAML。

API

PHP

存在一个Devnix\BelfioreCode\Collection\ComuneCollection和一个Devnix\BelfioreCode\Collection\RegionCollection,以获取一个填充了两个数据库的ArrayCollection。这使得您可以像数组一样直接遍历它们,甚至可以执行列查询。

查询

您可以通过其registry_code(也称为cadastral codebelfiore code)获取一个comune。

<?php

use Devnix\BelfioreCode\Collection\ComuneCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Expr\Comparison;

$comunes = new ComuneCollection();

$criteria = new Criteria();
$criteria
    ->where(new Comparison('registry_code', Comparison::IS, 'A001'))
;

var_dump($comunes->matching($criteria)));

这将获取一个包含匹配注册代码的新集合。如您所见,有一个名为"ABANO"的comune在1924-11-13停止运营,还有一个名为"ABANO TERME"的活跃comune。

object(Devnix\BelfioreCode\Collection\ComuneCollection)#49 (1) {
  ["elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
  array(2) {
    [0]=>
    array(18) {
      ["id"]=>
      string(5) "12560"
      ["institution_date"]=>
      string(10) "1866-11-19"
      ["end_date"]=>
      string(10) "1924-11-13"
      ["istat_id"]=>
      string(6) "028001"
      ["registry_code"]=>
      string(4) "A001"
      ["name_it"]=>
      string(5) "ABANO"
      ["name_transliterated"]=>
      string(5) "ABANO"
      ["alternative_name"]=>
      string(0) ""
      ["alternative_name_transliterated"]=>
      string(0) ""
      ["anpr_id"]=>
      string(2) "28"
      ["istat_province_id"]=>
      string(3) "028"
      ["istat_region_id"]=>
      string(2) "05"
      ["istat_prefecture_id"]=>
      string(0) ""
      ["status"]=>
      string(12) "discontinued"
      ["provincial_code"]=>
      string(2) "PD"
      ["source"]=>
      string(0) ""
      ["last_update"]=>
      string(10) "2016-06-17"
      ["istat_discontinued_code"]=>
      string(6) "028500"
    }
    [1]=>
    array(18) {
      ["id"]=>
      string(1) "1"
      ["institution_date"]=>
      string(10) "1924-11-14"
      ["end_date"]=>
      string(10) "9999-12-31"
      ["istat_id"]=>
      string(6) "028001"
      ["registry_code"]=>
      string(4) "A001"
      ["name_it"]=>
      string(11) "ABANO TERME"
      ["name_transliterated"]=>
      string(11) "ABANO TERME"
      ["alternative_name"]=>
      string(0) ""
      ["alternative_name_transliterated"]=>
      string(0) ""
      ["anpr_id"]=>
      string(2) "28"
      ["istat_province_id"]=>
      string(3) "028"
      ["istat_region_id"]=>
      string(2) "05"
      ["istat_prefecture_id"]=>
      string(2) "PD"
      ["status"]=>
      string(6) "active"
      ["provincial_code"]=>
      string(2) "PD"
      ["source"]=>
      string(0) ""
      ["last_update"]=>
      string(10) "2016-06-17"
      ["istat_discontinued_code"]=>
      string(0) ""
    }
  }
}

您可能希望通过其registry_code找到一个活跃的comune。为此,只需参考Doctrine Collections文档

<?php

use Devnix\BelfioreCode\Collection\ComuneCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Expr\Comparison;

$comunes = new ComuneCollection();

$criteria = new Criteria();
$criteria
    ->where(new Comparison('registry_code', Comparison::IS, 'A001'))
    ->andWhere(new Comparison('status', Comparison::IS, 'active'))
;

var_dump($comunes->matching($criteria)));

它将为您获取所需的标准

object(Devnix\BelfioreCode\Collection\ComuneCollection)#55 (1) {
  ["elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
  array(1) {
    [1]=>
    array(18) {
      ["id"]=>
      string(1) "1"
      ["institution_date"]=>
      string(10) "1924-11-14"
      ["end_date"]=>
      string(10) "9999-12-31"
      ["istat_id"]=>
      string(6) "028001"
      ["registry_code"]=>
      string(4) "A001"
      ["name_it"]=>
      string(11) "ABANO TERME"
      ["name_transliterated"]=>
      string(11) "ABANO TERME"
      ["alternative_name"]=>
      string(0) ""
      ["alternative_name_transliterated"]=>
      string(0) ""
      ["anpr_id"]=>
      string(2) "28"
      ["istat_province_id"]=>
      string(3) "028"
      ["istat_region_id"]=>
      string(2) "05"
      ["istat_prefecture_id"]=>
      string(2) "PD"
      ["status"]=>
      string(6) "active"
      ["provincial_code"]=>
      string(2) "PD"
      ["source"]=>
      string(0) ""
      ["last_update"]=>
      string(10) "2016-06-17"
      ["istat_discontinued_code"]=>
      string(0) ""
    }
  }
}

排序

排序也可以通过Doctrine Collections完成。请参阅他们的文档以查看可用的API

<?php

use Devnix\BelfioreCode\Collection\ComuneCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\Expr\Comparison;

$comunes = new ComuneCollection();

$criteria = new Criteria();
$criteria->orderBy(['last_update' => Criteria::ASC]);

var_dump($comunes->matching($criteria)));

路线图

  • 编写单元测试以验证数据源保持相同的格式
  • 编写涵盖所有类的单元测试
  • 用英文编写每个列的文档
  • 调查使用GitHub Actions每月自动运行更新命令的方法

贡献

您可以通过分支项目并创建拉取请求来做出贡献。请确保您所有的工作都在develop分支上,否则您的PR将被拒绝。

由于我非常希望得到一些反馈,特别是比我更熟悉这类数据的人的反馈,我将将其视为WIP,API/列名称可能在短期内发生变化。

归属

  • Comunes值列表:CC BY 4.0 内政部
  • 区域值列表:CC BY 3.0 国家统计局

Marketto/codice-fiscale-utils启发,与DavidePastore/codice-fiscale一起使用