如何使用 php 从 many2one 类型获取值
How to get value from many2one type using php
我想获取包含 id
、name
和 salesperson_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
我想获取包含 id
、name
和 salesperson_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