SugarCRM Получить последнюю дату электронной почты и поиск по ней - PullRequest
0 голосов
/ 12 января 2012

Так что в последнее время я довольно широко работал с SugarCRM, и мне нужно иметь возможность отображать последнюю дату, когда контакт был отправлен по электронной почте, а также поиск в зависимости от того, как давно контакт был отправлен по электронной почте.

Я могу легко создать логику для получения последней даты электронной почты, но я не могу искать по ее значению.

Поэтому я заглянул в SearchFields.php и нашел следующий код, который, очевидно,получает адрес электронной почты контакта.

'email' => 
  array (
    'query_type' => 'default',
    'operator' => 'subquery',
    'subquery' => 'SELECT eabr.bean_id FROM email_addr_bean_rel eabr JOIN email_addresses ea ON (ea.id = eabr.email_address_id) WHERE eabr.deleted=0 AND ea.email_address LIKE',
    'db_field' => 
    array (
      0 => 'id',
    ),
  ),

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

'last_email_c' => 
  array (
    'query_type' => 'default',
    'operator' => 'subquery',
    'subquery' => 'SELECT e.date_sent FROM emails e WHERE e.parent_type = \'Contacts\' AND e.parent_id = \'{0}\'',
    'db_field' => 
    array (
      0 => 'id',
    ),
  ),

Моя проблема в том, что я не знаю, что делатьВ этом новом подзапросе я зарегистрировался в listviewdefs и searchdefs и не могу найти ни одной из этих пользовательских полей поиска.

Чего мне не хватает?

1 Ответ

0 голосов
/ 07 марта 2012

Попробуйте это. В основном, когда вы используете подзапрос, вы должны предполагать, что параметр из формы будет добавлен в конец подзапроса, поэтому, если вы ищете blah@blah.com, сахар добавится в ваш подзапрос «blah@blah.com%», так что LIKE Оператор - единственный способ сделать это

t_email_c' =>  array ( 
'query_type' => 'default',
'operator' => 'subquery',
'subquery' => 'SELECT e.date_sent FROM emails e WHERE e.parent_type = \'Contacts\' AND e.parent_id LIKE ',
'db_field' => 
array (
  0 => 'id',
),

Кроме того, вы должны выбрать идентификатор родительской записи, чтобы затем ее можно было сопоставить с родительской записью.

В основном в вашем подзапросе вы должны выбрать контактный идентификатор, на который похожа дата последнего электронного письма.

Если вы не можете написать запрос таким образом, вам нужно будет сделать это, переписав действия list.view.

...