Odoo PHP API 和 Laradoo - 如何保存 many2many many2one 和选择字段

Odoo PHP API and Laradoo - how to save many2many many2one and selection fields

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

特别是如何将它们与 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)时,导致保持未标记状态。

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

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

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

对于 php api 与 ripcord 的用法,您可以将 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 link 到 m2m tag_ids 字段。这也可能是使用命令 6 表示在同一命令值上 link 多个 id:

'tag_ids' => array(array(6,0,array(1,2,3))),

如果使用命令 4,它将是:

'tag_ids' => array(array(4,1), array(4,2), array(4,3)),