本文整理汇总了PHP中Oro\Bundle\EntityExtendBundle\Tools\ExtendHelper::generateManyToManyJoinTableName方法的典型用法代码示例。如果您正苦于以下问题:PHP ExtendHelper::generateManyToManyJoinTableName方法的具体用法?PHP ExtendHelper::generateManyToManyJoinTableName怎么用?PHP ExtendHelper::generateManyToManyJoinTableName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Oro\Bundle\EntityExtendBundle\Tools\ExtendHelper
的用法示例。
在下文中一共展示了ExtendHelper::generateManyToManyJoinTableName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: prepareRelations
/**
* @param ConfigInterface $config
* @param ClassMetadataBuilder $cmBuilder
*/
protected function prepareRelations(ConfigInterface $config, ClassMetadataBuilder $cmBuilder)
{
if ($config->is('relation')) {
foreach ($config->get('relation') as $relation) {
/** @var FieldConfigId $fieldId */
if ($relation['assign'] && ($fieldId = $relation['field_id'])) {
/** @var FieldConfigId $targetFieldId */
$targetFieldId = $relation['target_field_id'];
$targetFieldName = $targetFieldId ? ExtendConfigDumper::FIELD_PREFIX . $targetFieldId->getFieldName() : null;
$fieldName = ExtendConfigDumper::FIELD_PREFIX . $fieldId->getFieldName();
$defaultName = ExtendConfigDumper::DEFAULT_PREFIX . $fieldId->getFieldName();
switch ($fieldId->getFieldType()) {
case 'manyToOne':
$builder = $cmBuilder->createManyToOne($fieldName, $relation['target_entity']);
if ($targetFieldName) {
$builder->inversedBy($targetFieldName);
}
$builder->addJoinColumn($fieldName . '_id', 'id', true, false, 'SET NULL');
$builder->cascadeDetach();
$builder->build();
break;
case 'oneToMany':
/** create 1:* */
$builder = $cmBuilder->createOneToMany($fieldName, $relation['target_entity']);
$builder->mappedBy($targetFieldName);
$builder->cascadeDetach();
$builder->build();
/** create 1:1 default */
$builder = $cmBuilder->createOneToOne($defaultName, $relation['target_entity']);
$builder->addJoinColumn($defaultName . '_id', 'id', true, false, 'SET NULL');
$builder->build();
break;
case 'manyToMany':
if ($relation['owner']) {
$builder = $cmBuilder->createManyToMany($fieldName, $relation['target_entity']);
if ($targetFieldName) {
$builder->inversedBy($targetFieldName);
}
$builder->setJoinTable(ExtendHelper::generateManyToManyJoinTableName($fieldId, $relation['target_entity']));
$builder->build();
$builder = $cmBuilder->createOneToOne($defaultName, $relation['target_entity']);
$builder->addJoinColumn($defaultName . '_id', 'id', true, false, 'SET NULL');
$builder->build();
} else {
$cmBuilder->addInverseManyToMany($fieldName, $relation['target_entity'], $targetFieldName);
}
break;
}
}
}
}
}