PHP API Odoo и Laradoo — как сохранить many2many many2one и поля выбора

Может ли кто-нибудь представить простой пример использования полей O2, one2many, many2many и selection при использовании Laradoo (или ripcord)?

В частности, как их можно использовать с create () и update (). В Python кажется, что они имеют дело с использованием специальных команд кортежа, однако для документации PHP очень сложно найти такие вещи, и это было бы чрезвычайно полезно.

В иллюстративных целях в моем конкретном проекте я не смог выяснить, как связать ведущий тег CRM с лидерством в процессе создания с использованием Laradoo:

$id = $odoo->create('crm.lead', [
'type'          => 'lead',
'priority'      => 0, <-- what do we pass here for this selection field?
'name'          => 'Example',
'contact_name'  => 'John Doe',
'phone'         => '555-555-5555',
'email_from'    => '[email protected]',
'description'   => 'Just some text.',
'tag_ids'       => [1], <-- What do we pass here for this one2many field?
]);

В приведенном выше примере при попытке установить в поле выбора приоритета значение int, отличное от 0, происходит сбой, и при попытке передать массив tag_ids (1 является допустимым идентификатором тега в моем проекте), вывод остается без тега.

0

Решение

Прежде всего значения полей выбора — это просто строковые значения, которые должны быть частью определенных в поле значений выбора.

Значения для реляционных полей, таких как Onetomany и Many2many, управляются форматированными командами значениями, в которых вы можете прочитать:

https://github.com/odoo/odoo/blob/11.0/odoo/models.py#L3020-L3055

Для использования php api с ripcord вы можете установить значение поля tag_ids следующим образом:

$id = $odoo->create('crm.lead', [
'type'          => 'lead',
'priority'      => '0',
'name'          => 'Example',
'contact_name'  => 'John Doe',
'phone'         => '555-555-5555',
'email_from'    => '[email protected]',
'description'   => 'Just some text.',
'tag_ids'       => array(array(4,1)),
]);

Это означает, что 1 является идентификатором известного и уже существующего crm.lead.tag, который можно связать с полем tagm метра m2m с помощью команды 4. Это также можно выразить с помощью команды 6, чтобы связать несколько идентификаторов с одним и тем же значением команды. :

'tag_ids' => array(array(6,0,array(1,2,3))),

где с помощью команды 4 это будет:

'tag_ids' => array(array(4,1), array(4,2), array(4,3)),

1

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

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

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