php - 通过 Many2One 字段搜索 odoo PHP XMLRPC

标签 php odoo xml-rpc odoo-8

我正在使用这个class用于通过 PHP XMLRPC 访问 odoo。 几乎一切都工作正常。我无法仅通过放置引用记录的 id 来搜索 Many2one 字段。我想应该有一种特殊的方式来编码搜索中的many2one id。 EG:使用此代码通过product_tmpl_id在product.supplierinfo中搜索,我得到返回的emtpy数组:

$rpc->searchread(array(array("product_tmpl_id","=","3673")),"product.supplierinfo");

通过 id 搜索记录,我得到以下结果:

$rpc->read(array(1),"", "product.supplierinfo");
Array
(
    [0] => Array
        (
            [create_uid] => Array
                (
                    [0] => xxxxx
                    [1] => xxxxx xxxxx
                )

            [product_code] => 
            [create_date] => 2016-06-22 11:08:00
            [name] => Array
                (
                    [0] => 1438
                    [1] => Provider one
                )

            [product_uom] => Array
                (
                    [0] => 1
                    [1] => Unit(s)
                )

            [sequence] => 1
            [product_name] => 
            [__last_update] => 2016-06-22 11:42:28
            [company_id] => Array
                (
                    [0] => 1
                    [1] => Company Name
                )

            [write_uid] => Array
                (
                    [0] => xxxx
                    [1] => xxxxxx xxxxx
                )

            [delay] => 1
            [write_date] => 2016-06-22 11:42:28
            [pricelist_ids] => Array
                (
                )

            [display_name] => Provider One
            [min_qty] => 0
            [qty] => 0
            [product_tmpl_id] => Array
                (
                    [0] => 3673
                    [1] => Product Name
                )

            [id] => 1
        )

)

我应该如何编码 Many2one 字段的 id? 任何帮助将不胜感激。

最佳答案

终于我找到了解决方案。正如 @czoellner 所建议的,问题是 ID 的类型是字符串,并且必须是整数。所以,这段代码运行良好。

$rpc->searchread(array(array("product_tmpl_id","=",3673)),"product.supplierinfo");

另一方面,必须考虑product.product的id和product.template的id之间的问题,因为它们是不同的。表product.supplierinfo使用product.template的id而不是product.product。这导致需要搜索表 produc.supplierinfo 来首先找到产品的 Product_tmpl_id 来引用该产品。因此,要查找产品的所有提供商:

#search it by id
$prod_odoo = $rpc->read(array(1),"product.product",array());
#every search returns a 2 dimension array
$prod_suppliers = $rpc->searchread(array(array("product_tmpl_id","=",(int)$prod_odoo[0]["product_tmpl_id"][0])),"product.supplierinfo");

希望这有帮助。

关于php - 通过 Many2One 字段搜索 odoo PHP XMLRPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37986262/

相关文章:

php - 如何获取视频文件的属性?

odoo-8 - Odoo - 过滤父类中的子记录

python - Odoo错误: TypeError: 'int' object is not iterable

odoo - 工作流程休假管理 odoo

python - 如何处理 Python XML-RPC 输出和异常?

python - 使用 Python SimpleXMLRPCServer 的无效 Unicode/XML?

php - Php PDO 函数 : lastInsertId? 有多安全

javascript - 按标签从 Gmail 帐户获取所有邮件

javascript - 在 JavaScript 中转义 HTML 实体?

php - 更正浮点值