PHP API Odoo и Laradoo - как сохранить many2many many2one и поля выбора - PullRequest
0 голосов
/ 13 сентября 2018

Может ли кто-нибудь привести простой пример использования полей 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'    => 'example@domain.com',
    'description'   => 'Just some text.',
    'tag_ids'       => [1], <-- What do we pass here for this one2many field?
]);

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

1 Ответ

0 голосов
/ 13 сентября 2018

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

Значения для реляционных полей, таких как 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'    => 'example@domain.com',
    '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)),

...