2015-03-13 3 views
3

я торчу некоторое время, потому что в случаях логического крючка я не мог загрузить contacts_cases отношения, как я сделал с другим пользовательских отношений, как это:Где я могу найти имена отношений по умолчанию в SugarCRM?

$bean->load_relationship('cases_lines'); 
$lines = $bean->cases_lines->getBeans(); 

$bean->load_relationship('contacts_cases'); 
$contacts->$bean->contacts_cases->getBeans(); 

Первым работали, последняя не был ,
я узнал, что я использовал неправильное название, потому что это отношения по умолчанию, и его имя «контакты», а не «contacts_cases», как я предполагал, так что я изменить свой код так:

$bean->load_relationship('contacts'); 
$contacts->$bean->contacts->getBeans(); 

и сейчас он работает отлично.
Я не нашел в документации разницу в именах между стандартными и настраиваемыми отношениями, я нашел решение выше, только отлаживая метод SugarBean 'load_relationship' и распечатывая загруженные отношения.

Эта строка кода

error_log('LOADED RELATIONSHIPS '.print_r($this->loaded_relationships, true)); 

распечатаны

Array\n(\n [0] => cases_lines\n [1] => contacts\n)\n 

В Студии отношения выглядит как «contacts_cases», единственное место, где я нашел название «контакты» в модулях файле/Случаи/vardefs.php

'contacts' => 
array (
    'name' => 'contacts', 
    'type' => 'link', 
    'relationship' => 'contacts_cases', 
    'source'=>'non-db', 
     'vname'=>'LBL_CONTACTS', 
), 

Также в таблице отношений имя_связи «conta» cts_cases.

Есть ли место, где я могу видеть настоящие имена, которые я должен использовать при вызове load_relationship или единственное решение, которое ищет в vardefs?

ответ

0

Самый простой источник - это посмотреть в каталог кеша, поскольку он объединяет все настраиваемые и готовые поля и отношения в один большой массив. Чтобы увидеть все отношения с точки зрения учетной записи, отметьте cache/modules/Accounts/Accountsvardefs.php и найдите ключ relationships и любой fields, где параметр type - link. Вы найдете «фондовые» отношения, такие как contacts и opportunities, а также любые пользовательские отношения встроены в этот массив.

Обратите внимание, что пользовательские отношения будут называться разными вещами в зависимости от объекта, с которым вы работаете. Например, пользовательские отношения «один ко многим» между настраиваемыми модулями Питание и Ингредиенты можно назвать key_meals_ingredients_meals на стороне еды и key_meals_ingredients_ingredients со стороны Ингредиентов.

Вы также можете найти их в пользовательском интерфейсе, используя Studio. Перейдите в Studio, затем ваш модуль, а затем в таблицу «Отношения». Столбец «Имя» слева от таблицы «Соотношения» - это значение, которое вы используете.

+0

Спасибо, конечно, полезно иметь один файл для просмотра, мне просто странно, что я должен вызывать разные настройки по умолчанию и пользовательские отношения (по умолчанию с именем поля, custom с именем отношения). Я всегда использовал имя, появившееся в Studio, это первый раз, когда я заметил эту разницу. Я проверил ваш другой намек, и я заметил, что все мои пользовательские отношения называются одинаковыми с обеих сторон, может ли эта вещь зависеть от версии sugarcrm? – lyisia

+0

Отношения - это «vardef» или «отношения», основанные не на том, является ли это запасом или обычаем, а основаны на том, что было в конвенции, когда оно было создано. Как ни странно, вы обнаружите фондовые отношения в обоих направлениях. Отчасти это связано с тем, является ли это отношением один/много или много/много. В любом случае, поэтому всегда полезно проверять файлы кеша :) –

Смежные вопросы