如何使用 php 从 many2one 类型获取值

How to get value from many2one type using php

我想获取包含 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

已解决!!

我不知道你是要打印销售人员的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