繁体   English   中英

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

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

有人可以提供一个简单的示例,说明在使用 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)时,潜在客户保持未标记状态。

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

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' => array(array(6,0,array(1,2,3))),

使用命令 4 的地方将是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM