【问题标题】:Odoo PHP API and Laradoo - how to save many2many many2one and selection fieldsOdoo PHP API 和 Laradoo - 如何保存 many2many many2one 和选择字段
【发布时间】:2018-09-13 03:31:45
【问题描述】:

有人可以提供一个简单的例子来说明在使用 Laradoo(或 ripcord)时处理 Odoo 的 one2many、many2many 和 selection 字段的用法吗?

具体来说,如何将它们与 create() 和 update() 一起使用。在 Python 中,似乎这些都是使用特殊的元组命令来处理的,但是对于 PHP 文档来说,这些类型的东西似乎很难找到,这将非常有帮助。

为了在我的特定项目中进行说明,我无法弄清楚如何在使用 Laradoo 的创建过程中将 CRM 潜在客户标签与潜在客户相关联:

$id = $odoo->create('crm.lead', [
    'type'          => 'lead',
    'priority'      => 0, <-- what do we pass here for this selection field?
    'name'          => 'Example',
    'contact_name'  => 'John Doe',
    'phone'         => '555-555-5555',
    'email_from'    => 'example@domain.com',
    'description'   => 'Just some text.',
    'tag_ids'       => [1], <-- What do we pass here for this one2many field?
]);

在上面的示例中,当尝试将优先级选择字段设置为非 0 的 int 失败并且尝试传递 tag_ids 数组(1 是我项目中的有效标签 ID)时,潜在客户保持未标记。

【问题讨论】:

    标签: php odoo xml-rpc ripcord


    【解决方案1】:

    首先,选择字段值只是需要成为字段定义选择值的一部分的字符串值。

    Onetomany 和 Many2many 等关系字段的值由命令格式的值决定,您可以在以下位置阅读:

    https://github.com/odoo/odoo/blob/11.0/odoo/models.py#L3020-L3055

    对于 ripcord 的 php api 使用,您可以设置 tag_ids 字段值,如:

    $id = $odoo->create('crm.lead', [
        'type'          => 'lead',
        'priority'      => '0',
        'name'          => 'Example',
        'contact_name'  => 'John Doe',
        'phone'         => '555-555-5555',
        'email_from'    => 'example@domain.com',
        'description'   => 'Just some text.',
        'tag_ids'       => array(array(4,1)),
    ]);
    

    这意味着 1 是一个已知且已经存在的 crm.lead.tag 的 id,您可以使用命令 4 链接到 m2m tag_ids 字段。这也可以使用命令 6 来表示,以链接多个 id相同的命令值:

    'tag_ids' =&gt; array(array(6,0,array(1,2,3))),

    使用命令 4 的位置:

    'tag_ids' =&gt; array(array(4,1), array(4,2), array(4,3)),

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多