【问题标题】:How to get value from many2one type using php如何使用 php 从 many2one 类型中获取价值
【发布时间】:2018-01-24 01:34:54
【问题描述】:

我想获取包含idnamesalesperson_id 信息的合作伙伴数据,其中“salesperson_id”是 many2one 类型(包含 id 和名称)。这是我的代码:

    <?php
    // Login information
    $url = 'localhost';
    $url_auth = $url . '/xmlrp/common';
    $url_exec = $url . '/xmlrpc/object';

    $db = 'testing';
    $username = 'odoo';
    $password = 'odoo';

    // Ripcord can be cloned from https://github.com/poef/ripcord
    require_once('ripcord/ripcord.php');

    // Login
    $common = ripcord::client("$url/xmlrpc/common");
    //$common = ripcord::client($url_auth);
    $uid = $common->authenticate($db, $username, $password, array());

    //print("<p>Your current user id is '${uid}'</p>");

    $models = ripcord::client($url_exec);

    $customer = $models->execute_kw(
        $db,
        $uid,
        $password,
        'res.partner',
        'search_read', 
        array( // Search domain
            array(
                array('is_company', '=', true), // Query condition
                array('customer', '=', true)) // Query condition
            ),
        array('fields'=> array('name', 'salesperson_id'))
    );

    print("<p><strong>Found customers:</strong><br/>");
    foreach ($customer as $customers){
        print("${customers[id]}
               ${customers[name]}
               {$customers[salesperson_id][0]}

               <br/>");
        }
    print("</p>");
?>

它会显示:

Found customers:
1234 CHLOE 12
1235 DRY MART 13
1236 SEEYOU 14
1237 ED. COMP 15

解决了!!

【问题讨论】:

  • 您的${customers[salesperson_id]} 正在返回一个数组,而它应该返回一个整数。 customers[salesperson_id] 是什么样的?我猜你可以使用${customers[salesperson_id][1]} 访问 ID。
  • @ObsidianAge,当我将其更改为${customers[salesperson_id][1]} 时,页面出现错误"This page isn’t working localhost is currently unable to handle this request. HTTP ERROR 500"
  • 模型 res_partner 没有名为 salesperson_id 的字段。但是您可以从 sale_order 中获取它作为字段 user_id 应该是 salesperson_id
  • PHP 上没有调试工具可以让您准确地看到$customers[salesperson_id] 的样子吗?然后确切地知道要打印什么?
  • @Burmesepythis,在我的 sale.order 模型中有 salesperson_id 类型为 many2field。

标签: php arrays openerp xml-rpc many-to-one


【解决方案1】:

我不知道您是否要打印销售人员的 ID 或姓名。但是您的代码引发 500 服务器错误的问题是 IndexError。当您执行$customers[salesperson_id][1] 时,第一个将失败,因为用户没有销售人员。因此$customers[salesperson_id] 不是一个数组而是一个布尔值,尝试访问它的任何索引都会引发错误。

我不擅长PHP,所以我只是要指出答案:

  • $customers[salesperson_id][0] 是销售人员的 ID,$customers[salesperson_id][1] 是其名称。
  • 如果客户没有销售人员,$customers[salesperson_id] 将具有 false 作为值。

所以解决办法:

  • 检查$customers[salesperson_id] 是否不是false
  • 打印$customers[salesperson_id][0]$customers[salesperson_id][1] 如果$customers[salesperson_id] 不是false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多