Beispiel #1
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('categories')->setCustomRepositoryClass('Mautic\\CategoryBundle\\Entity\\CategoryRepository')->addIndex(['alias'], 'category_alias_search');
     $builder->addIdColumns('title');
     $builder->addField('alias', 'string');
     $builder->createField('color', 'string')->nullable()->length(7)->build();
     $builder->createField('bundle', 'string')->length(50)->build();
 }
Beispiel #2
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('stages')->setCustomRepositoryClass('Mautic\\StageBundle\\Entity\\StageRepository');
     $builder->addIdColumns();
     $builder->createField('weight', 'integer')->build();
     $builder->addPublishDates();
     $builder->createOneToMany('log', 'LeadStageLog')->mappedBy('stage')->cascadePersist()->cascadeRemove()->fetchExtraLazy()->build();
     $builder->addCategory();
 }
Beispiel #3
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('roles')->setCustomRepositoryClass('Mautic\\UserBundle\\Entity\\RoleRepository');
     $builder->addIdColumns();
     $builder->createField('isAdmin', 'boolean')->columnName('is_admin')->build();
     $builder->createOneToMany('permissions', 'Permission')->orphanRemoval()->mappedBy('role')->cascadePersist()->cascadeRemove()->fetchExtraLazy()->build();
     $builder->createField('rawPermissions', 'array')->columnName('readable_permissions')->build();
     $builder->createOneToMany('users', 'User')->mappedBy('role')->fetchExtraLazy()->build();
 }
Beispiel #4
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('lead_lists')->setCustomRepositoryClass('Mautic\\LeadBundle\\Entity\\LeadListRepository');
     $builder->addIdColumns();
     $builder->addField('alias', 'string');
     $builder->addField('filters', 'array');
     $builder->createField('isGlobal', 'boolean')->columnName('is_global')->build();
     $builder->createOneToMany('leads', 'ListLead')->setIndexBy('id')->mappedBy('list')->fetchExtraLazy()->build();
 }
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('dynamic_content_lead_data');
     $builder->addIdColumns(false, false);
     $builder->addDateAdded(true);
     $builder->createManyToOne('lead', 'Mautic\\LeadBundle\\Entity\\Lead')->inversedBy('id')->addJoinColumn('lead_id', 'id')->build();
     $builder->createManyToOne('dynamicContent', 'DynamicContent')->inversedBy('id')->addJoinColumn('dynamic_content_id', 'id')->build();
     $builder->createField('slot', 'text')->columnName('slot')->build();
 }
Beispiel #6
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('form_actions')->setCustomRepositoryClass('Mautic\\FormBundle\\Entity\\ActionRepository')->addIndex(array('type'), 'form_action_type_search');
     $builder->addIdColumns();
     $builder->createField('type', 'string')->length(50)->build();
     $builder->createField('order', 'integer')->columnName('action_order')->build();
     $builder->addField('properties', 'array');
     $builder->createManyToOne('form', 'Form')->inversedBy('actions')->addJoinColumn('form_id', 'id', false, false, 'CASCADE')->build();
 }
Beispiel #7
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('oauth1_consumers')->setCustomRepositoryClass('Mautic\\ApiBundle\\Entity\\oAuth1\\ConsumerRepository')->addLifecycleEvent('createConsumerKeys', 'prePersist')->addIndex(array('consumer_key'), 'consumer_search');
     $builder->addIdColumns('name', false);
     $builder->createField('consumerKey', 'string')->columnName('consumer_key')->build();
     $builder->createField('consumerSecret', 'string')->columnName('consumer_secret')->build();
     $builder->addField('callback', 'string');
     $builder->createOneToMany('accessTokens', 'AccessToken')->setIndexBy('id')->mappedBy('consumer')->fetchExtraLazy()->build();
 }
Beispiel #8
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('oauth2_clients')->setCustomRepositoryClass('Mautic\\ApiBundle\\Entity\\oAuth2\\ClientRepository')->addIndex(array('random_id'), 'client_id_search');
     $builder->addIdColumns('name', false);
     $builder->createManyToMany('users', 'Mautic\\UserBundle\\Entity\\User')->setJoinTable('oauth2_user_client_xref')->addInverseJoinColumn('user_id', 'id', false, false, 'CASCADE')->addJoinColumn('client_id', 'id', false, false, 'CASCADE')->fetchExtraLazy()->build();
     $builder->createField('randomId', 'string')->columnName('random_id')->build();
     $builder->addField('secret', 'string');
     $builder->createField('redirectUris', 'array')->columnName('redirect_uris')->build();
     $builder->createField('allowedGrantTypes', 'array')->columnName('allowed_grant_types')->build();
 }
Beispiel #9
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('plugins')->setCustomRepositoryClass('Mautic\\PluginBundle\\Entity\\PluginRepository')->addUniqueConstraint(['bundle'], 'unique_bundle');
     $builder->addIdColumns();
     $builder->createField('isMissing', 'boolean')->columnName('is_missing')->build();
     $builder->createField('bundle', 'string')->length(50)->build();
     $builder->createField('version', 'string')->nullable()->build();
     $builder->createField('author', 'string')->nullable()->build();
     $builder->createOneToMany('integrations', 'Integration')->setIndexBy('id')->mappedBy('plugin')->fetchExtraLazy()->build();
 }
Beispiel #10
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('point_trigger_events')->setCustomRepositoryClass('Mautic\\PointBundle\\Entity\\TriggerEventRepository')->addIndex(['type'], 'trigger_type_search');
     $builder->addIdColumns();
     $builder->createField('type', 'string')->length(50)->build();
     $builder->createField('order', 'integer')->columnName('action_order')->build();
     $builder->addField('properties', 'array');
     $builder->createManyToOne('trigger', 'Trigger')->inversedBy('events')->addJoinColumn('trigger_id', 'id', false, false, 'CASCADE')->build();
     $builder->createOneToMany('log', 'LeadTriggerLog')->mappedBy('event')->cascadePersist()->cascadeRemove()->fetchExtraLazy()->build();
 }
Beispiel #11
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('points')->setCustomRepositoryClass('Mautic\\PointBundle\\Entity\\PointRepository')->addIndex(array('type'), 'point_type_search');
     $builder->addIdColumns();
     $builder->createField('type', 'string')->length(50)->build();
     $builder->addPublishDates();
     $builder->addField('delta', 'integer');
     $builder->addField('properties', 'array');
     $builder->createOneToMany('log', 'LeadPointLog')->mappedBy('point')->cascadePersist()->cascadeRemove()->fetchExtraLazy()->build();
     $builder->addCategory();
 }
Beispiel #12
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('point_triggers')->setCustomRepositoryClass('Mautic\\PointBundle\\Entity\\TriggerRepository');
     $builder->addIdColumns();
     $builder->addPublishDates();
     $builder->addField('points', 'integer');
     $builder->createField('color', 'string')->length(7)->build();
     $builder->createField('triggerExistingLeads', 'boolean')->columnName('trigger_existing_leads')->build();
     $builder->addCategory();
     $builder->createOneToMany('events', 'TriggerEvent')->setIndexBy('id')->setOrderBy(array('order' => 'ASC'))->mappedBy('trigger')->cascadeAll()->fetchExtraLazy()->build();
 }
Beispiel #13
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('reports')->setCustomRepositoryClass('Mautic\\ReportBundle\\Entity\\ReportRepository');
     $builder->addIdColumns();
     $builder->addField('system', 'boolean');
     $builder->addField('source', 'string');
     $builder->createField('columns', 'array')->nullable()->build();
     $builder->createField('filters', 'array')->nullable()->build();
     $builder->createField('tableOrder', 'array')->columnName('table_order')->nullable()->build();
     $builder->createField('graphs', 'array')->nullable()->build();
 }
Beispiel #14
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('monitoring')->setCustomRepositoryClass('MauticPlugin\\MauticSocialBundle\\Entity\\MonitoringRepository')->addLifecycleEvent('cleanMonitorData', 'preUpdate')->addLifecycleEvent('cleanMonitorData', 'prePersist');
     $builder->addCategory();
     $builder->addIdColumns('title');
     $builder->addNullableField('lists', 'array');
     $builder->addNamedField('networkType', 'string', 'network_type', true);
     $builder->addField('revision', 'integer');
     $builder->addNullableField('stats', 'array');
     $builder->addNullableField('properties', 'array');
     $builder->addPublishDates();
 }
Beispiel #15
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('webhooks')->setCustomRepositoryClass('Mautic\\WebhookBundle\\Entity\\WebhookRepository');
     // id columns
     $builder->addIdColumns();
     // categories
     $builder->addCategory();
     // 1:M for events
     $builder->createOneToMany('events', 'Event')->orphanRemoval()->setIndexBy('event_type')->mappedBy('webhook')->cascadePersist()->build();
     // 1:M for queues
     $builder->createOneToMany('queues', 'WebhookQueue')->mappedBy('webhook')->fetchExtraLazy()->cascadePersist()->build();
     // 1:M for logs
     $builder->createOneToMany('logs', 'Log')->setOrderBy(['dateAdded' => 'DESC'])->fetchExtraLazy()->mappedBy('webhook')->cascadePersist()->build();
     // status code
     $builder->createField('webhookUrl', 'string')->columnName('webhook_url')->length(255)->build();
 }
Beispiel #16
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('campaigns')->setCustomRepositoryClass('Mautic\\CampaignBundle\\Entity\\CampaignRepository');
     $builder->addIdColumns();
     $builder->addPublishDates();
     $builder->addCategory();
     $builder->createOneToMany('events', 'Event')->setIndexBy('id')->setOrderBy(['order' => 'ASC'])->mappedBy('campaign')->cascadeAll()->fetchExtraLazy()->build();
     $builder->createOneToMany('leads', 'Lead')->setIndexBy('id')->mappedBy('campaign')->fetchExtraLazy()->build();
     $builder->createManyToMany('lists', 'Mautic\\LeadBundle\\Entity\\LeadList')->setJoinTable('campaign_leadlist_xref')->setIndexBy('id')->addInverseJoinColumn('leadlist_id', 'id', false, false, 'CASCADE')->addJoinColumn('campaign_id', 'id', true, false, 'CASCADE')->build();
     $builder->createManyToMany('forms', 'Mautic\\FormBundle\\Entity\\Form')->setJoinTable('campaign_form_xref')->setIndexBy('id')->addInverseJoinColumn('form_id', 'id', false, false, 'CASCADE')->addJoinColumn('campaign_id', 'id', true, false, 'CASCADE')->build();
     $builder->createField('canvasSettings', 'array')->columnName('canvas_settings')->nullable()->build();
 }
Beispiel #17
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('dynamic_content')->setCustomRepositoryClass('Mautic\\DynamicContentBundle\\Entity\\DynamicContentRepository');
     $builder->addIdColumns();
     $builder->addCategory();
     $builder->addPublishDates();
     $builder->createField('sentCount', 'integer')->columnName('sent_count')->build();
     $builder->createField('content', 'text')->columnName('content')->nullable()->build();
     $builder->createOneToMany('stats', 'Stat')->setIndexBy('id')->mappedBy('dynamicContent')->cascadePersist()->fetchExtraLazy()->build();
     self::addTranslationMetadata($builder, self::class);
     self::addVariantMetadata($builder, self::class);
 }
Beispiel #18
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('campaign_events')->setCustomRepositoryClass('Mautic\\CampaignBundle\\Entity\\EventRepository')->addIndex(array('type', 'event_type'), 'campaign_event_type_search');
     $builder->addIdColumns();
     $builder->createField('type', 'string')->length(50)->build();
     $builder->createField('eventType', 'string')->columnName('event_type')->length(50)->build();
     $builder->createField('order', 'integer')->columnName('event_order')->build();
     $builder->addField('properties', 'array');
     $builder->createField('triggerDate', 'datetime')->columnName('trigger_date')->nullable()->build();
     $builder->createField('triggerInterval', 'integer')->columnName('trigger_interval')->nullable()->build();
     $builder->createField('triggerIntervalUnit', 'string')->columnName('trigger_interval_unit')->length(1)->nullable()->build();
     $builder->createField('triggerMode', 'string')->columnName('trigger_mode')->length(10)->nullable()->build();
     $builder->createManyToOne('campaign', 'Campaign')->inversedBy('events')->addJoinColumn('campaign_id', 'id', false, false, 'CASCADE')->build();
     $builder->createOneToMany('children', 'Event')->setIndexBy('id')->setOrderBy(array('order' => 'ASC'))->mappedBy('parent')->build();
     $builder->createManyToOne('parent', 'Event')->inversedBy('children')->cascadePersist()->addJoinColumn('parent_id', 'id')->build();
     $builder->createField('decisionPath', 'string')->columnName('decision_path')->nullable()->build();
     $builder->createField('tempId', 'string')->columnName('temp_id')->nullable()->build();
     $builder->createOneToMany('log', 'LeadEventLog')->mappedBy('event')->cascadePersist()->cascadeRemove()->fetchExtraLazy()->build();
 }
Beispiel #19
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('focus')->setCustomRepositoryClass('MauticPlugin\\MauticFocusBundle\\Entity\\FocusRepository')->addIndex(['focus_type'], 'focus_type')->addIndex(['style'], 'focus_style')->addIndex(['form_id'], 'focus_form');
     $builder->addIdColumns();
     $builder->addCategory();
     $builder->addNamedField('type', 'string', 'focus_type');
     $builder->addField('style', 'string');
     $builder->addNullableField('website', 'string');
     $builder->addPublishDates();
     $builder->addNullableField('properties', 'array');
     $builder->addNamedField('form', 'integer', 'form_id', true);
     $builder->addNullableField('cache', 'text');
 }
Beispiel #20
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('assets')->setCustomRepositoryClass('Mautic\\AssetBundle\\Entity\\AssetRepository')->addIndex(array('alias'), 'asset_alias_search');
     $builder->addIdColumns('title');
     $builder->addField('alias', 'string');
     $builder->createField('storageLocation', 'string')->columnName('storage_location')->nullable()->build();
     $builder->createField('path', 'string')->nullable()->build();
     $builder->createField('remotePath', 'string')->columnName('remote_path')->nullable()->build();
     $builder->createField('originalFileName', 'string')->columnName('original_file_name')->nullable()->build();
     $builder->createField('language', 'string')->columnName('lang')->build();
     $builder->addPublishDates();
     $builder->createField('downloadCount', 'integer')->columnName('download_count')->build();
     $builder->createField('uniqueDownloadCount', 'integer')->columnName('unique_download_count')->build();
     $builder->addField('revision', 'integer');
     $builder->addCategory();
     $builder->createField('extension', 'string')->nullable()->build();
     $builder->createField('mime', 'string')->nullable()->build();
     $builder->createField('size', 'integer')->nullable()->build();
 }
Beispiel #21
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('forms')->setCustomRepositoryClass('Mautic\\FormBundle\\Entity\\FormRepository');
     $builder->addIdColumns();
     $builder->addField('alias', 'string');
     $builder->addCategory();
     $builder->createField('cachedHtml', 'text')->columnName('cached_html')->nullable()->build();
     $builder->createField('postAction', 'string')->columnName('post_action')->build();
     $builder->createField('postActionProperty', 'string')->columnName('post_action_property')->nullable()->build();
     $builder->addPublishDates();
     $builder->createOneToMany('fields', 'Field')->setIndexBy('id')->setOrderBy(array('order' => 'ASC'))->mappedBy('form')->cascadeAll()->fetchExtraLazy()->build();
     $builder->createOneToMany('actions', 'Action')->setIndexBy('id')->setOrderBy(array('order' => 'ASC'))->mappedBy('form')->cascadeAll()->fetchExtraLazy()->build();
     $builder->createField('template', 'string')->nullable()->build();
     $builder->createField('inKioskMode', 'boolean')->columnName('in_kiosk_mode')->nullable()->build();
     $builder->createField('renderStyle', 'boolean')->columnName('render_style')->nullable()->build();
     $builder->createOneToMany('submissions', 'Submission')->setOrderBy(array('dateSubmitted' => 'DESC'))->mappedBy('form')->fetchExtraLazy()->build();
     $builder->addNullableField('formType', 'string', 'form_type');
 }
Beispiel #22
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('widgets')->setCustomRepositoryClass('Mautic\\DashboardBundle\\Entity\\WidgetRepository');
     $builder->addIdColumns('name', false);
     $builder->addField('type', 'string');
     $builder->addField('width', 'integer');
     $builder->addField('height', 'integer');
     $builder->createField('cacheTimeout', 'integer')->columnName('cache_timeout')->nullable()->build();
     $builder->createField('ordering', 'integer')->nullable()->build();
     $builder->createField('params', 'array')->nullable()->build();
 }
Beispiel #23
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('push_notifications')->setCustomRepositoryClass('Mautic\\NotificationBundle\\Entity\\NotificationRepository');
     $builder->addIdColumns();
     $builder->createField('language', 'string')->columnName('lang')->build();
     $builder->createField('url', 'text')->nullable()->build();
     $builder->createField('heading', 'text')->build();
     $builder->createField('message', 'text')->build();
     $builder->createField('notificationType', 'text')->columnName('notification_type')->nullable()->build();
     $builder->addPublishDates();
     $builder->createField('readCount', 'integer')->columnName('read_count')->build();
     $builder->createField('sentCount', 'integer')->columnName('sent_count')->build();
     $builder->addCategory();
     $builder->createManyToMany('lists', 'Mautic\\LeadBundle\\Entity\\LeadList')->setJoinTable('push_notification_list_xref')->setIndexBy('id')->addInverseJoinColumn('leadlist_id', 'id', false, false, 'CASCADE')->addJoinColumn('notification_id', 'id', false, false, 'CASCADE')->fetchExtraLazy()->build();
     $builder->createOneToMany('stats', 'Stat')->setIndexBy('id')->mappedBy('notification')->cascadePersist()->fetchExtraLazy()->build();
 }
Beispiel #24
0
 /**
  * @param ORM\ClassMetadata $metadata
  */
 public static function loadMetadata(ORM\ClassMetadata $metadata)
 {
     $builder = new ClassMetadataBuilder($metadata);
     $builder->setTable('emails')->setCustomRepositoryClass('Mautic\\EmailBundle\\Entity\\EmailRepository');
     $builder->addIdColumns();
     $builder->createField('subject', 'text')->nullable()->build();
     $builder->createField('fromAddress', 'string')->columnName('from_address')->nullable()->build();
     $builder->createField('fromName', 'string')->columnName('from_name')->nullable()->build();
     $builder->createField('replyToAddress', 'string')->columnName('reply_to_address')->nullable()->build();
     $builder->createField('bccAddress', 'string')->columnName('bcc_address')->nullable()->build();
     $builder->createField('template', 'string')->nullable()->build();
     $builder->createField('language', 'string')->columnName('lang')->build();
     $builder->createField('content', 'array')->nullable()->build();
     $builder->createField('plainText', 'text')->columnName('plain_text')->nullable()->build();
     $builder->createField('customHtml', 'text')->columnName('custom_html')->nullable()->build();
     $builder->createField('emailType', 'text')->columnName('email_type')->nullable()->build();
     $builder->addPublishDates();
     $builder->createField('readCount', 'integer')->columnName('read_count')->build();
     $builder->createField('sentCount', 'integer')->columnName('sent_count')->build();
     $builder->addField('revision', 'integer');
     $builder->addCategory();
     $builder->createManyToMany('lists', 'Mautic\\LeadBundle\\Entity\\LeadList')->setJoinTable('email_list_xref')->setIndexBy('id')->addInverseJoinColumn('leadlist_id', 'id', false, false, 'CASCADE')->addJoinColumn('email_id', 'id', false, false, 'CASCADE')->fetchExtraLazy()->build();
     $builder->createOneToMany('stats', 'Stat')->setIndexBy('id')->mappedBy('email')->cascadePersist()->fetchExtraLazy()->build();
     $builder->createManyToOne('variantParent', 'Email')->inversedBy('variantChildren')->addJoinColumn('variant_parent_id', 'id')->build();
     $builder->createOneToMany('variantChildren', 'Email')->setIndexBy('id')->mappedBy('variantParent')->fetchLazy()->build();
     $builder->createField('variantSettings', 'array')->columnName('variant_settings')->nullable()->build();
     $builder->createField('variantStartDate', 'datetime')->columnName('variant_start_date')->nullable()->build();
     $builder->createField('variantSentCount', 'integer')->columnName('variant_sent_count')->build();
     $builder->createField('variantReadCount', 'integer')->columnName('variant_read_count')->build();
     $builder->createManyToOne('unsubscribeForm', 'Mautic\\FormBundle\\Entity\\Form')->addJoinColumn('unsubscribeform_id', 'id', true, false, 'SET NULL')->build();
     $builder->createManyToMany('assetAttachments', 'Mautic\\AssetBundle\\Entity\\Asset')->setJoinTable('email_assets_xref')->addInverseJoinColumn('asset_id', 'id', false, false, 'CASCADE')->addJoinColumn('email_id', 'id', false, false, 'CASCADE')->fetchExtraLazy()->build();
 }