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

时间:2018-09-13 03:31:46

标签: php odoo xml-rpc ripcord

有人可以提供使用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是有效的tag id)时,线索仍然未加标签。

1 个答案:

答案 0 :(得分: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上的多个ID。相同的命令值:

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

在使用命令4的地方将是:

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