obuchmann/laravel-odoo-api

Laravel连接器,用于Odoo

v0.5-beta 2021-02-19 09:02 UTC

This package is auto-updated.

Last update: 2024-08-30 01:39:34 UTC


README

这是一个中等级别的API,用于连接Odoo(前身为OpenERP)的XMLRPC-API,适用于Laravel。Odoo网站

此包是Laradoo(Laradoo)的后续版本,但不具有向后兼容性!

⚠️ 此包不再维护。继任者为Odoo Jsonrpc

兼容性

Laravel 7及以上

Odoo 8.0及以上

Php 7.4及以上

安装

此包通过Composer安装。要安装,请运行以下命令。

composer require obuchmann/laravel-odoo-api

将包的配置文件发布到应用程序的配置目录

php artisan vendor:publish --provider="Obuchmann\LaravelOdooApi\Providers\OdooServiceProvider" --tag="config"

此包支持自动发现。

如果您由于某些原因不使用自动发现,可以按以下说明添加提供者。

通过将其添加到提供者数组中注册Laravel Odoo Api服务。

'providers' => array(
        ...
        Obuchmann\LaravelOdooApi\Providers\OdooServiceProvider::class
    )

您还可以添加别名外观。

'aliases' => array(
        ...
        'Odoo' => Obuchmann\LaravelOdooApi\Facades\Odoo::class,
    )

配置

发布包配置文件后,laravel-odoo-api包的基本配置位于config/laravel-odoo-api.php

此外,您还可以通过调用可用的setter方法动态更新这些值

host($url), username($username), password($password), database($name), apiSuffix($name)

使用示例

实例化主Odoo类

$odoo = new \Obuchmann\LaravelOdooApi\Odoo();

您可以通过调用version方法来获取Odoo API版本

$version = $odoo->version();

此方法不需要连接到/登录ERP。

连接并登录ERP

$odoo = $odoo->connect();

所有必要的配置数据均来自laravel-odoo-api.php配置文件。但您始终可以在必要时传递新值。

$this->odoo = $this->odoo
            ->username('my-user-name')
            ->password('my-password')
            ->database('my-db')
            ->host('https://my-host.com')
            ->connect();

// 注意:host应包含'http://'或'https://'

登录后,您可以按以下方式检查用户标识符

$userId = $this->odoo->getUid();

您始终可以检查特定模型上的权限

$can = $odoo->can('read', 'res.partner');

可检查的权限:'read','write','create','unlink'

方法`search`根据您的条件提供一组id

$ids = $odoo
    ->model('res.partner')
    ->where('customer', '=', true)
    ->search();

您可以使用limit方法限制数据量,并使用所需的所有条件

$ids = $odoo
    ->model('res.partner')
    ->where('is_company', true)
    ->where('customer', '=', true)
    ->limit(3)
    ->search();

如果您需要获取模型列表,请使用get方法

$models = $odoo
    ->model('res.partner')
    ->where('customer', true)
    ->limit(3)
    ->get();

您可以在调用get方法之前添加fields方法来减少模型的所有属性

$models = $odoo
    ->model('res.partner')
    ->where('customer', true)
    ->limit(3)
    ->fields(['name'])
    ->get();

如果您不确定模型有哪些字段,可以通过调用fieldsOf方法检索模型结构数据

$structure = $odoo
    ->model('res.partner')
    ->listModelFields();

到目前为止,我们只从Odoo检索数据,但您也可以创建和删除记录。

为了创建新记录,只需调用以下create方法

$id = $odoo
    ->model('res.partner')
    ->create(['name' => 'Bobby Brown']);

此方法返回新记录的id。

对于删除记录,我们有delete方法

$result = $odoo
    ->model('res.partner')
    ->where('name', '=', 'Bobby Brown')
    ->delete();

请注意,在调用delete方法之前,您必须使用where

您还可以按以下方式按id删除记录

$result = $odoo
    ->model('res.partner')
    ->deleteById($ids);

更新Odoo中的任何记录

$updateSuccessfull = $odoo
    ->model('res.partner')
    ->where('name', '=', 'Bobby Brown')
    ->update(['name' => 'Dagobert Duck','email' => 'daduck@odoo.com']);

请注意,所有deleteupdate方法始终返回true,除非发生错误。

也支持自定义API调用

$ids = $odoo
    ->model('res.partner')
    ->setMethod('search')
    ->setArguments([[
        ['is_company', '=', true]
    ]])
    ->setOption('limit', 3)
    ->addResponseClass(Odoo\Response\ListResponse::class)
    ->get();