codemusk/odoo-api

Laravel 包,使用 Ripcord 与 Odoo API 交互

1.0 2024-07-14 12:50 UTC

This package is auto-updated.

Last update: 2024-09-14 13:26:34 UTC


README

简介

OdooApi 是一个 Laravel 包,使用 Ripcord 与 Odoo API 交互。此包提供了一种简单且干净的方法将 Odoo 的功能集成到您的 Laravel 应用程序中。

安装

  1. 使用 composer 安装此包

    composer require codemusk/odoo-api
  2. 将服务提供者和别名添加到您的 config/app.php 文件中(适用于 Laravel 版本低于 11)

    'providers' => [
        // Other Service Providers
        Codemusk\OdooApi\OdooApiServiceProvider::class,
    ],
    
    'aliases' => [
        // Other Facades
        'OdooApi' => Codemusk\OdooApi\Facades\OdooApi::class,
    ],
  3. 对于 Laravel 11 及以上版本,将服务提供者和别名添加到包的 composer.json 文件的 extra 部分

    "extra": {
        "laravel": {
            "providers": [
                "Codemusk\\OdooApi\\OdooApiServiceProvider"
            ],
            "aliases": {
                "OdooApi": "Codemusk\\OdooApi\\Facades\\OdooApi"
            }
        }
    }
  4. 发布配置文件

    php artisan vendor:publish --provider="Codemusk\OdooApi\OdooApiServiceProvider"
  5. 通过编辑 config/odooapi.php 文件并使用您的 Odoo 连接详细信息来配置此包

    return [
        'url' => env('ODOO_URL', 'http://your-odoo-instance.com'),
        'db' => env('ODOO_DB', 'your-database-name'),
        'username' => env('ODOO_USERNAME', 'your-username'),
        'password' => env('ODOO_PASSWORD', 'your-password'),
    ];

用法

以下是如何在 Laravel 控制器中使用 OdooApi 包的示例

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Codemusk\OdooApi\Facades\OdooApi;

class TestController extends Controller
{
    public function test()
    {
        try {
            // List records
            $partners = OdooApi::listRecords('res.partner', 0, 10, ['name', 'email']);
        
            // Create a record
            $newPartner = OdooApi::createRecord('res.partner', [
                'name' => 'New Partner',
                'email' => 'newpartner@example.com',
            ]);
        
            // Update a record
            $updateResult = OdooApi::updateRecord('res.partner', $newPartner, [
                'name' => 'Updated Partner Name',
            ]);
        
            // Delete a record
            $deleteResult = OdooApi::deleteRecord('res.partner', $newPartner);
        
            // Read a specific record
            $record = OdooApi::readRecord('res.partner', 8);
        
            // Search and read records
            $filteredRecords = OdooApi::searchAndRead('res.partner', [['name', 'ilike', 'John']], ['name', 'email'], 0, 10);
        
            // List record fields
            $fields = OdooApi::listRecordFields('res.partner');
        
            // Output results (example)
            dd($partners, $newPartner, $updateResult, $deleteResult, $record, $filteredRecords, $fields);
        } catch (\Exception $e) {
            echo "Error: " . $e->getMessage();
        }
    }
}

方法

以下方法可用于与 Odoo API 交互:

listRecords($model, $offset = 0, $limit = 10, $fields = []) 从指定的模型获取记录列表。

$model: Odoo 模型的名称(例如,'res.partner')。 $offset: 分页的偏移量(默认为 0)。 $limit: 要检索的最大记录数(默认为 10)。 $fields: 要检索的字段数组(默认为空数组)。 createRecord($model, $data) 在指定的模型中创建新的记录。

$model: Odoo 模型的名称(例如,'res.partner')。 $data: 要插入的数据的关联数组。 updateRecord($model, $id, $data) 更新指定模型中的现有记录。

$model: Odoo 模型的名称(例如,'res.partner')。 $id: 要更新的记录的 ID。 $data: 要更新的数据的关联数组。 deleteRecord($model, $id) 从指定的模型中删除记录。

$model: Odoo 模型的名称(例如,'res.partner')。 $id: 要删除的记录的 ID。 readRecord($model, $id) 从指定的模型中读取特定的记录。

$model: Odoo 模型的名称(例如,'res.partner')。 $id: 要读取的记录的 ID。 searchAndRead($model, $domain, $fields, $offset = 0, $limit = 10) 根据域搜索记录,然后读取它们。

$model: Odoo 模型的名称(例如,'res.partner')。 $domain: 指定搜索域的数组。 $fields: 要检索的字段数组。 $offset: 分页的偏移量(默认为 0)。 $limit: 要检索的最大记录数(默认为 10)。 listRecordFields($model) 列出指定模型的字段。

$model: Odoo 模型的名称(例如,'res.partner')。

sudo apt-get install php-xmlrpc

故障排除

brew install php@8.3

确保已安装 PHP XML-RPC 库。对于 PHP 8,您可以使用

或者

如果您遇到身份验证问题,请检查 config/odooapi.php 文件中的 Odoo 连接详细信息。

This `README.md` provides a comprehensive overview of the package, installation instructions, usage examples, and detailed descriptions of each method available for interacting with the Odoo API.