2017-08-16 85 views
2

我想獲取有信息的合作伙伴數據id,namesalesperson_id其中'salesperson_id'是many2one類型(包含id和name)。這裏是我的代碼:如何使用php獲取many2one類型的值

<?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 

解決!

+1

你'$ {客戶[salesperson_id]}'是當它應該返回一個整數時返回一個數組。 'customers [salesperson_id]'看起來像什麼?我猜你可以用'$ {customers [salesperson_id] [1]}'來訪問ID。 –

+0

@ObsidianAge,當我將其更改爲'$ {customers [salesperson_id] [1]}',頁面出錯'「此頁面不起作用 localhost當前無法處理此請求 HTTP ERROR 500」 ' – 0987654poiu

+0

模型res_partner沒有名爲salesperson_id的字段。但是,您可以從sale_order中獲取它作爲字段user_id這將是salesperson_id –

回答

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
+0

現在工作。謝謝 – 0987654poiu

+0

不客氣。 – Majikat