使用php API写入Odoo many2many字段的正确语法

时间:2015-11-20 14:53:38

标签: php openerp xml-rpc openerp-7

我正在尝试通过将现有发票链接到它来更新现有的sale.order。我已经尝试了几项内容将发票ID 添加到销售订单的 invoice_ids 数组中,但没有任何效果。

这是我的代码:

$link = $models->execute_kw($db, $uid, $password, 'sale.order', 'write',
array(array($order_id), 
array('invoice_ids'=>$invoice_id)));

返回1,但不会改变任何内容。我也试过这种方法,但没有成功:https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model.write

我认为我的语法有问题。

2 个答案:

答案 0 :(得分:1)

尝试使用此代码:

#general syntax for many2many field
$many2many_field = array(
    new xmlrpcval(
        array(
            new xmlrpcval(6,"int"),
            new xmlrpcval(0,"int"),
            new xmlrpcval(array(new xmlrpcval($order_id,"int")),"array")
            ), "array")
    );

array('invoice_ids'=> new xmlrpcval($many2many_field, "array"))

通常我们需要提供类似 [(6,0,[id1,id2等]]]

的格式

答案 1 :(得分:0)

下面我发布了使用ripcord(php rpc库)更新Many2many的代码片段。

$models->execute_kw($db, $uid, $password, 'sale.order', 'write',
                                       array('order_id'=> $order_id, 
                                              'invoice_ids'=>array(array(6,0,array($invoice_ids)))
                                             )
                                       );

我希望这对您的情况有所帮助。