noxxie / ptv-laravel
您应用程序与PTV传输数据库之间的接口
Requires
- awobaz/compoships: ^1.1
- watson/validating: ^3.1
This package is auto-updated.
Last update: 2024-09-10 20:27:49 UTC
README
此包允许您管理从PTV应用程序的传输数据库中导入和导出数据。此包使用PTV中的transferDB选项将数据传输到和从PTV。
安装
此包可用于Laravel 5.4或更高版本。目前不支持旧版本。您可以通过composer安装此包
composer require noxxie/ptv-laravel
服务提供程序将自动注册。或者,您也可以在您的config/app.php
文件中手动添加服务提供程序
'providers' => [ ... Noxxie\Ptv\PtvServiceProvider::class, ];
您可以使用以下命令发布配置文件:php artisan vendor:publish --provider="Noxxie\Ptv\PtvServiceProvider" --tag="config"
通过发布配置文件,您不仅可以更改许多默认值,还可以添加额外的值以满足您的需求。请阅读config以获取有关配置此包的更多信息。
配置
当配置文件发布后,您可以使用配置文件配置许多设置。
connection
,使用此选项,您可以为该包指定需要使用哪个连接名称来连接到您的PTV传输数据库。因此,在您的config/database.php
文件中指定额外的数据库连接非常重要。默认情况下,此包将搜索名称为ptv
的连接。
数据库连接示例
... 'ptv' => [ 'driver' => 'sqlsrv', 'host' => '', 'port' => '1433', 'database' => '', 'username' => '', 'password' => '', 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], ...
注意:直接在config/database.php
中定义SQL数据库设置将导致您的用户名和密码数据被上传到您可能使用的任何git中。请记住,使用环境
文件要安全得多。(有关环境变量的laravel文档)。
friendly_naming
,此选项允许您在编写订单导入时使用更简单的命名。我个人总是搞不清楚哪个列名用于哪个动作,以及它在哪个表中存储。使用友好的命名选项,您可以“翻译”列名到一个更容易记住的名称。
默认情况下,此包包含预配置的简单命名选项。例如,当导入订单时,我想要为地址数据设置一个更简单的命名,这样对我来说更有意义
'IORA_ORDER_ACTIONPOINT' => [ 'postcode' => 'IORA_POSTCODE', 'city' => 'IORA_CITY', 'country' => 'IORA_COUNTRY', 'street' => 'IORA_STREET', 'houseno' => 'IORA_HOUSENO', 'timewindow' => 'IORA_HANDLINGTIME_CLASS', 'from' => 'IORA_EARLIEST_DATETIME', 'till' => 'IORA_LATEST_DATETIME', ],
现在,在friendly_naming
中设置了上述设置,该包将自动将所有属性转换为正确的列名。
默认值
,使用此选项,您可以在创建新订单时设置始终需要的默认值,但实际上它们在创建新订单时永远不会更改。您不需要在每次导入时定义它们,而是在配置类中定义一次,当您创建新订单时,它们将自动注入到新订单中。
请注意,默认选项是在创建新订单时设置的第一个选项,因此您可以在创建新订单时覆盖每个默认选项。
此外,您还可以使用默认选项中的占位符
,这些占位符将在创建订单时用数据替换。以下是可以用的
%UNIQUE_ID%
,将被替换为传输数据库中未使用的唯一ID%CURRENT_DATE%
,将被替换为当前日期(格式Ymd)%UNIQUE_IORA_ID%
,将被替换为用于在PTV中创建新订单位置的唯一ID
如果您不确定如何处理从PTV迁移数据库的这些选项,请不要更改此包内默认已放置的占位符。
用法
此包可以以不同的方式访问 order
或 route
实例。
依赖注入
您可以通过Laravel提供的依赖注入来访问一个实例。
<?php ... use Noxxie\Ptv\Contracts\Order; use Noxxie\Ptv\Contracts\Route; ... public function mockup(Route $route) { $order->create(...); } public function mockup_order(Order $order) { $route->getNotImported(); }
当您使用依赖注入选项时,您将获得 route
或 order
对象的一个实例。因此,您可以直接使用该类提供的功能。
从服务容器中解析
您可以使用以下方法从服务容器中解析实例:
$route = App()->Make('Noxxie\Ptv\Contracts\Route'); $order = App()->Make('Noxxie\Ptv\Contracts\Order');
当您想在PTV中创建新订单时,您也可以从服务容器中解析实例,并立即执行功能。例如:您想在PTV中创建新订单,您可以解析并立即执行订单
$order = App()->MakeWith('Noxxie\Ptv\Contracts\Order', [ 'type' => 'CREATE', 'attributes' => [...], ]);
同样适用于从服务容器中解析路由。然而,功能仅限于从数据库中获取一个路由。
$route= App()->MakeWith('Noxxie\Ptv\Contracts\Route', [ 'id' => '123456', ];
使用门面
您还可以使用提供的门面来开始使用此包。(这是推荐的使用此包的方式)
<?php ... use Noxxie\Ptv\Facades\Order; use Noxxie\Ptv\Facades\Route; ... public function mockup() { $Order = Order::create(...); $Route = Route::getNotImported(); }
接下来是什么?
使用此包为您的PTV应用程序创建一个惊人的导入。此包纯粹是为我正在/曾经工作的项目创建的。然而,您可以根据自己的意愿自由使用它。
有关更多详细示例和文档,请查看“docs”文件夹,以获取有关 order 和 route 实例及其确切功能的详细信息。
为了确保您的数据真正导入到PTV,您可以查看 ImportCheck 功能。
如果您想确保始终向迁移数据库插入唯一的ID,请查看 UniqueIdGeneration 类。此辅助类可以确保您始终插入唯一的ID。
许可证
MIT许可证(MIT)。