akvo/akvo-flow-php-sdk

Akvo Flow 的 PHP Artisan 服务提供者

v1.0.6 2021-06-01 03:13 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:56 UTC


README

Packagist Contributors Forks Stargazers Issues MIT License


Akvo Flow PHP SDK

此包生成 数据库迁移ORM 模型
易于使用,可开发基于 Akvo Flow 数据的定制网站。
报告错误 · 请求功能 · 请求咨询

系统要求

您必须在 宿主操作系统 的命令行上安装以下工具

先决条件

要快速在当前目录中安装 Composer,请在您的终端中运行以下脚本。

  1. 安装 Composer
php -r "copy('https://getcomposer.org.cn/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
  1. 创建新的 Laravel 项目
composer create-project --prefer-dist laravel/laravel <PROJECT_NAME>

安装

创建您的 Laravel 项目,然后将包添加到 composer.json

{
    "require": {
        "akvo/akvo-flow-php-sdk": "1.0.*"
    }
}
composer install

或者您也可以直接运行 composer 命令

composer require akvo/akvo-flow-php-sdk

用法

设置 .env 文件

在您的项目中,只需添加以下环境变量即可开始使用 Akvo Flow API

AKVOFLOW_AUTH_URL='https://akvo.auth0.com/oauth/token'
AKVOFLOW_CLIENT_ID=''
AKVOFLOW_API_URL='https://api-auth0.akvo.org/flow/orgs'
AKVOFLOW_INSTANCE='organisation_subdomain'
AKVOFLOW_USERNAME='youremail@gmail.org'
AKVOFLOW_PASSWORD=''
AKVOFLOW_FORM_URL='https://tech-consultancy.akvo.org/akvo-flow-web-api'
AKVOFLOW_METHOD='fetch' # fetch (using form cache) / update (get latest form), default: update

更多详情

运行命令

要查看所有可用的 Akvo Flow 命令列表,您可以使用带有 php artisan - Laravel Artisan 的 list 命令。

  • akvo:migrate,将数据库模式迁移以存储 Akvo Flow 内容。
  • akvo:seed,通过 Akvo Flow REST API 使用 Akvo Flow 数据填充数据库。
    • akvo:seed --only-surveys,填充调查,但不包括其数据点。

数据库模式

运行 php artisan akvo:migrate 后,您将看到几个表已迁移到数据库中。

Eloquent ORM

包中包含的 Eloquent ORM 提供了一个用于与 Akvo Flow 数据库交互的简单 ActiveRecord 实现。每个数据库表都有一个对应的“模型”,用于与表交互。您可以将所有 Akvo Flow 模型 直接加载到您的控制器中。

use Akvo\Models\Survey;
use Akvo\Models\Answer;

public function surveyAndForms(Survey $surveys)
{
  return $surveys->with('forms');
}

public function answerAndForm(Answer $answer)
{
  return $answer->load('question.form');
}

如果您希望将不同的模式扩展到模型中,您也可以将它们扩展到您的模型目录中(Laravel 7+)。

之前

[{
  "id":4310019,
  "name": "Just an example survey (Test)",
  "registration_id": 24390001,
  "path": "/Farmfit surveys/Cases 2019/Agri-Wallet (Kenya)/Survey Agri-Wallet",
  "created_at": "2020-09-10T19:17:22",
  "updated_at": "2020-09-10T19:17:22"
}]

扩展 App\Model,添加一个名为 short 的新对象

Namespace App\Model;

use Illuminate\Support\Str;
use Akvo\Models\Survey as AkvoSurvey;

class Survey extends AkvoSurvey
{
  $protected $appends = ['short'];
  
  public function getShortAttribute()
  {
        $text = trim(preg_replace('!\s+-!', ' -', $this->name));
        $text = Str::beforeLast($text, ' (');
        return Str::upper($text);
  }
}

结果

[{
  "id":4310019,
  "name": "Just an example survey (Test)",
  "registration_id": 24390001,
  "path": "/Farmfit surveys/Cases 2019/Agri-Wallet (Kenya)/Survey Agri-Wallet",
  "short": "Just an example survey",
  "created_at": "2020-09-10T19:17:22",
  "updated_at": "2020-09-10T19:17:22"
}]

回滚

要回滚最新的迁移操作,您可能需要运行 php artisan migrate:reset,或者您也可以重新运行 php artisan akvo:migrate

关于 Akvo

Akvo 是一家总部位于荷兰阿姆斯特丹的非营利性互联网和软件开发公司。该基金会主要专注于构建和运营用于国际发展和援助活动的数据收集和可视化系统。

Akvo Flow

Akvo Flow 是一个用于收集、评估和展示地理参考数据的工具。它由一个 Android 移动应用 和一个在线的基于网络的平台组成。这个仓库包含基于网络的平台的代码,包括一个 后端引擎 和一个 仪表盘用户界面。除了仪表盘和移动应用之外,还有一个 数据导入和导出组件

Akvo 技术咨询

Akvo 提供数据咨询和数字平台,以支持我们的合作伙伴设计项目,在构建上层应用的基础上,解决方案的核心是用像 Akvo 的稳健产品作为主力,然后是一层定制化,足够接近满足合作伙伴的需求。