liquetsoft / fias-laravel
Laravel 用于 FIAS 数据库导入的包
Requires
- php: >=8.2
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^8.0|^9.0|^10.0|^11.0
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
- liquetsoft/fias-component: ^13.0
Requires (Dev)
- fakerphp/faker: ^1.7
- friendsofphp/php-cs-fixer: ^3.0
- nette/php-generator: ^4.0
- phpunit/phpunit: ^10.0
- vimeo/psalm: ^5.0
- dev-master
- v13.0.0
- v12.1.0
- v12.0.0
- v11.0.1
- v11.0.0
- v10.0.0
- v9.1.0
- v9.0.6
- v9.0.5
- v9.0.4
- v9.0.3
- v9.0.2
- v9.0.1
- v9.0.0
- v8.1.4
- v8.1.3
- v8.1.2
- v8.1.1
- v8.1.0
- v8.0.0
- v7.0.1
- v7.0.0
- v6.6.1
- v6.6.0
- v6.5.0
- v6.4.1
- v6.3.0
- v6.2.0
- v6.1.0
- v6.0.0
- v5.0.0
- v4.2.0
- v4.1.0
- v4.0.0
- v3.0.0
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.0
- dev-feature/update-main-component-http
This package is auto-updated.
Last update: 2024-09-25 20:49:35 UTC
README
用于安装来自 ФИАС 数据的 Laravel 包。
使用 xml 文件安装 ФИАС,这些文件的链接由 ФИАС 信息服务 SOAP 服务提供。
安装
-
使用 composer 安装包
composer require liquetsoft/fias-laravel
-
包遵循标准结构,因此对于
laravel >=5.5
,将自动通过Package Discovery
注册。对于更早的版本,需要手动注册提供者,将其添加到config/app.php
'providers' => [ // Other Service Providers Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\LiquetsoftFiasBundleServiceProvider::class, ],
-
包提供自己的配置,默认情况下将使用它。强烈建议在项目中发布配置的副本,而不是使用内置的配置
php artisan vendor:publish --provider="Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\LiquetsoftFiasBundleServiceProvider"
-
可以使用选项
eloquent_connection
配置包将使用的数据库连接// config/liquetsoft_fias.php 'eloquent_connection' => 'custom_connection',
-
包提供迁移,这些迁移将在数据库中创建表结构
php artisan migrate
可以使用选项
allow_bundle_migrations
禁用迁移,如果结构不合适或过多// config/liquetsoft_fias.php 'allow_bundle_migrations' => false,
-
包尝试将 ФИАС 记录转换为对象。需要指定使用哪些实体(未指定转换类的实体将不会使用)以及转换到哪些对象(请注意,项目侧的实体可以是任意的,symfony 序列化器 将尝试将 xml 转换为指定的对象)
// config/liquetsoft_fias.php /* * Имя класса для сущности, которая хранит историю версий ФИАС. */ 'version_manager_entity' => FiasVersion::class, /* * Связка между сущностями ФИАС и моделями в проекте. */ 'entity_bindings' => [ 'ADDR_OBJ' => AddrObj::class, 'ADDR_OBJ_DIVISION' => AddrObjDivision::class, 'ADDR_OBJ_TYPES' => AddrObjTypes::class, 'ADM_HIERARCHY' => AdmHierarchy::class, 'APARTMENTS' => Apartments::class, 'APARTMENT_TYPES' => ApartmentTypes::class, 'CARPLACES' => Carplaces::class, 'CHANGE_HISTORY' => ChangeHistory::class, 'HOUSES' => Houses::class, 'HOUSE_TYPES' => HouseTypes::class, 'MUN_HIERARCHY' => MunHierarchy::class, 'NORMATIVE_DOCS' => NormativeDocs::class, 'NORMATIVE_DOCS_KINDS' => NormativeDocsKinds::class, 'NORMATIVE_DOCS_TYPES' => NormativeDocsTypes::class, 'OBJECT_LEVELS' => ObjectLevels::class, 'OPERATION_TYPES' => OperationTypes::class, 'PARAM' => Param::class, 'PARAM_TYPES' => ParamTypes::class, 'REESTR_OBJECTS' => ReestrObjects::class, 'ROOMS' => Rooms::class, 'ROOM_TYPES' => RoomTypes::class, 'STEADS' => Steads::class, ],
包还包括相应的 eloquent 模型和资源类
Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\AddrObj
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\AddrObjDivision
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\AddrObjTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\AdmHierarchy
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\Apartments
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\ApartmentTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\Carplaces
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\ChangeHistory
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\Houses
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\HouseTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\MunHierarchy
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\NormativeDocs
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\NormativeDocsKinds
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\NormativeDocsTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\ObjectLevels
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\OperationTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\Param
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\ParamTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\ReestrObjects
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\Rooms
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\RoomTypes
,Liquetsoft\Fias\Laravel\LiquetsoftFiasBundle\Entity\Steads
.
使用
包提供了几个重要的控制台命令
-
从头开始安装 ФИАС
php artisan liquetsoft:fias:install
-
通过增量更新 ФИАС(安装仅在第一次运行时启动,更新应作为
cron
任务的设置)php artisan liquetsoft:fias:update
-
当前 ФИАС 服务器的状态(信息服务或文件服务器可能由于各种原因不可用)
php artisan liquetsoft:fias:status
-
可安装和更新的 ФИАС 版本列表
php artisan liquetsoft:fias:versions
-
下载和解压 ФИАС 完整版本的存档
php artisan liquetsoft:fias:download /path/to/download full --extract
-
从指定目录安装 ФИАС
php artisan liquetsoft:fias:install_from_folder /path/to/extracted/fias
-
从指定目录更新 ФИАС
php artisan liquetsoft:fias:update_from_folder /path/to/extracted/fias
-
强制安装当前 ФИАС 版本号
php artisan liquetsoft:fias:version_set 20160101
性能
有一些方法可以使用包的设置来加速导入
-
删除未使用的实体;例如,如果不需要停车场信息,则可以禁用
CARPLACES
的匹配// config/liquetsoft_fias.php 'entity_bindings' => [ // 'CARPLACES' => Carplaces::class, ],
-
由于在GAR格式中所有数据都按地区文件夹划分,因此可以排除处理未使用地区的文件
// config/liquetsoft_fias.php 'files_filter' => [ "#^.+/extracted/30/AS_.+$#", // разрешает все данные для региона "#^.+/extracted/AS_.+$#", // разрешает общие словари // все остальные файлы будут проигнорированы ],
内存大小耗尽
在一些Laravel安装中,安装ФИАС时由于脚本缺乏内存而出现错误。这与调试和日志记录包有关。为了安装ФИАС,应该要么完全禁用这些包,要么禁用对数据库的请求处理。
已知的冲突
-
facade/ignition:
-
使用以下命令发布配置文件,如果尚未发布:
php artisan vendor:publish --provider="Facade\Ignition\IgnitionServiceProvider" --tag="flare-config"
-
禁用对数据库查询的日志记录
//в config/flare.php 'reporting' => [ 'report_queries' => false, 'report_query_bindings' => false, ],
-
-
laravel/telescope
-
禁用所有控制台命令的日志记录
// в config/telescope.php 'ignore_commands' => [ 'liquetsoft:fias*', ],
-