此包已被弃用且不再维护。作者建议使用 volldigital/laravel-navision 包代替。
1.1.13
2023-03-31 07:50 UTC
Requires
- php: ^7.2 || ^8.0 || ^8.1 || ^8.2
- laravel/framework: ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
This package is auto-updated.
Last update: 2023-03-31 07:53:51 UTC
README
一个用于与Microsoft Navision通信的小型包。您可以获取集合和单个记录。
安装
运行以下命令
composer require volldigital/laravel-navision
php artisan vendor:publish --provider="VOLLdigital\LaravelNavision\LaravelNavisionServiceProvider"
编辑您的 "config/ntlm.php" 文件或使用ENV变量。
使用方法
设置好配置后,通过以下方式加载客户端
$client = app(VOLLdigital\LaravelNavision\Client::class);
现在您可以接收Navision的数据了。
示例
$client = app(VOLLdigital\LaravelNavision\Client::class); $data = $client->fetchCollection("Events"); $event = $client->fetchOne("Events", 'Key', 'Number');
您也可以分块获取数据。数据将写入文本文件,请求完成后,它将被解析并删除。
$client = app(VOLLdigital\LaravelNavision\Client::class); // file will be stored in /storage/app/temp/curl_uniqueid.temp $data = $client->fetchCollection("Events", true);
您想检查与UNITOP的连接是否建立?您可以使用ping函数进行检查:)
$client = app(VOLLdigital\LaravelNavision\Client::class); if ($client->ping() === false) { throw new RunTimeException('No connection available'); }
写入数据
使用 $client->writeData(string $url, array $data);
将数据写入Navision。
示例
$client->writeData( 'Items', [ 'Item_Code' => 'VD', 'Item_Description' => 'Test data' ] );
计算条目数
使用 $client->countCollection("您的集合")
来接收该集合中条目的数量。
示例
dd($client->countCollection('Events')); // Outputs: 100293
示例
查询参数
- $skip=XXXX - 跳过X个条目
$temp = $this->client->fetchCollection('Events?$skip=10000');
- $top=XXXX - 接收X个条目
$temp = $this->client->fetchCollection('Events?$top=10');
获取数据
protected function fetchData(string $uri, $key, bool $chunk = false, ?callable $filter = null) { $temp = $this->client->fetchCollection($uri, $chunk); $data = []; foreach($temp as $ts) { if (!is_null($filter) && $filter($ts) === false) { continue; } $data[$ts[$key]] = $ts; } return collect($data); }
分页
protected function fetchAll() { $number = $this->client->countCollection('Events'); $pageLimit = 10000; $pages = (int)ceil($number / $pageLimit); $events = []; for ($i = 0; $i < $pages; $i++) { $skip = $i * $pageLimit; $temp = $this->fetchData('Events?$skip='.$skip, 'Number'); $events = array_merge($events, $temp->toArray()); } return collect($events); }