openerp — Поиск по Many2One Поле odoo PHP XMLRPC

я использую это учебный класс для доступа к odoo через PHP XMLRPC.
Все работает почти нормально. Я не могу выполнить поиск по многим полям, просто указав идентификатор указанной записи. Я предполагаю, что должен быть особый способ кодировать идентификатор many2one в поиске.
Например: поиск в product.supplierinfo по product_tmpl_id с использованием этого кода возвращает массив emtpy:

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

При поиске записи по идентификатору я получаю такой результат:

$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?
Любая помощь будет оценена.

2

Решение

Наконец-то у меня было решение. Как предположил @czoellner, проблема заключалась в том, что тип идентификатора был строкой и должен быть целым числом. Итак, этот код работал нормально.

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

С другой стороны, необходимо учитывать проблему между идентификатором product.product и идентификатором product.template, поскольку они различаются. Таблица product.supplierinfo использует идентификатор product.template вместо 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");

Надеюсь это поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]