- Edited
Hello Everybody !My boss wants me to improve the ticket's export function : add form_entry_values.valueI figured out the contraints :(scheme : Table.id => Table.foreignId )ost_ticket.ticket_id => ost_form_entry.object_id ost_form_entry.id => ost_form_entry_values.entry_id ost_form_entry_values.valueAnd ost_from_entry_values.value is the field I need.So for one ticket i will have : - one ost_ticket.ticket_id - one ost_form_entry.object_id - several ost_form_entry.id - several ost_form_entry_values.valueSadly i don't know how to improve the function which select the data for the export : $tickets = $sql->models() ->select_related('user', 'user__default_email', 'dept', 'staff', 'team', 'staff', 'cdata', 'topic', 'status', 'cdata__', 'sla') ->options(QuerySet:) ->annotate(array( 'collab_count' => TicketThread:() ->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1))) ->aggregate(array('count' => SqlAggregate:('collaborators__id'))), 'attachment_count' => TicketThread:() ->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1))) ->filter(array('entries__attachments__inline' => 0)) ->aggregate(array('count' => SqlAggregate:('entries__attachments__id'))), 'thread_count' => TicketThread:() ->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1))) ->exclude(array('entries__flags__hasbit' => ThreadEntry:)) ->aggregate(array('count' => SqlAggregate:('entries__id'))), ));return self:($tickets, array( 'number' => __('Ticket Number'), 'created' => __('Date Created'), 'cdata.subject' => __('Subject'), 'user.name' => __('From'), 'user.default_email.address' => __('From Email'), 'cdata..priority_desc' => __('Priority'), 'dept:' => __('Department'), 'topic:' => __('Help Topic'), 'source' => __('Source'), 'status:' =>__('Current Status'), 'lastupdate' => __('Last Updated'), 'est_duedate' => __('Due Date'), 'isoverdue' => __('Overdue'), 'isanswered' => __('Answered'), 'staff:' => __('Agent Assigned'), 'team:' => __('Team Assigned'), 'thread_count' => __('Thread Count'), 'attachment_count' => __('Attachment Count'), 'sla.name' => __('SLA'), ) + $cdata, $how, array('modify' => function(&$record, $keys) use ($fields) { foreach ($fields as $k=>$f) { if (($i = array_search($k, $keys)) !== false) { $record = $f->export($f->to_php($record)); } } return $record; }) );Note : the SLA field has been add by me and works.So if you have some ideas guys, it will be marvelous !