qeti/yii2-podata-adapter

用于在 Yii2 中使用 POData 的适配器

v0.9 2015-09-26 04:57 UTC

This package is auto-updated.

Last update: 2024-09-21 02:42:45 UTC


README

这是什么?

使用库 ODataYii2 中,通过 POData

谁在使用它?

  • 这是一个开发人员的工具,他们使用 Yii2 框架

安装

需要 PHP 5.4 或更高版本才能使用。需要 Yii2 框架

建议使用 composer 进行安装。将以下内容添加到 Yii2 项目的 composer.json 文件的 requirerepositories 部分

    "require": {
       "qeti/simple-podata": ">=0.9.1"
    }

然后运行 composer update

使用方法

在你的基本 Yii2 项目中

将以下内容添加到配置文件 web.php

    'components' => [
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'qeti\Yii2PODataAdapter\ODataUrlRule'],
            ],
        ],
    ],
    'controllerMap' => [
        'o-data' => 'qeti\Yii2PODataAdapter\implementation\ODataController',
    ],

设置 MetaProvider 的类映射

yii::$classMap['qeti\Yii2PODataAdapter\implementation\MetadataProvider'] = '@app/models/OData/MetadataProvider.php';

创建描述实体的类,例如

namespace app\models\OData\Entities;

use yii\db\ActiveRecord;
use qeti\SimplePOData\EntityTrait;

class Request extends ActiveRecord {

    use EntityTrait;

    public $id;
    public $type_code;
    public $status_code;
}

创建描述所有实体用于 POData 的 MetaProvider 类,例如

namespace qeti\Yii2PODataAdapter\implementation;

use POData\Providers\Metadata\Type\EdmPrimitiveType;
use POData\Providers\Metadata\SimpleMetadataProvider;

class MetadataProvider
{
    const MetaNamespace = "Data";

    /**
     * @return IMetadataProvider
     */
    public static function create()
    {
        $metadata = new SimpleMetadataProvider('Data', self::MetaNamespace);

        $requestEntityType = self::createRequestEntityType($metadata);
        $requestResourceSet = $metadata->addResourceSet('Requests', $requestEntityType);

        return $metadata;
    }

    private static function createRequestEntityType(SimpleMetadataProvider $metadata)
    {
        $et = $metadata->addEntityType(new \ReflectionClass('app\models\OData\Entities\Request'), 'Requests', self::MetaNamespace);
        $metadata->addKeyProperty($et, 'id', EdmPrimitiveType::INT64); 
        $metadata->addPrimitiveProperty($et, 'type_code', EdmPrimitiveType::STRING);
        $metadata->addPrimitiveProperty($et, 'status_code', EdmPrimitiveType::STRING);
        return $et;
    }

}

尝试打开链接

  • http:///odata.svc/$metadata

  • http:///odata.svc/Requests?$format=json&$skip=1&$top=14&$inlinecount=allpages&$filter=status_code eq 'held'

  • http:///odata.svc/Requests/$count?&$filter=status_code eq 'held'

  • http:///odata.svc/Requests(2465)

有关 URL 格式的更多详细信息,请参阅 OData 文档

我可以自由使用它吗?

此库是开源的,并受 MIT 许可证 的约束。这意味着只要提及我的名字并包含 许可证文件,您就可以用它做任何事情。请参阅 许可证 以获取详细信息。

联系方式

请通过 电子邮件 联系我。