Skip to content

Commit d24652f

Browse files
authored
Merge pull request #87 from activated-insights/orm-3.1-update
Doctrine 3 Compatibility
2 parents c21ed0a + d9e697d commit d24652f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+158
-132
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![License](https://img.shields.io/packagist/l/laravel-doctrine/fluent.svg?style=flat-square)](https://packagist.org/packages/laravel-doctrine/fluent)
88
[![Github actions](https://github.com/laravel-doctrine/fluent/workflows/CI/badge.svg?branch=1.x)](https://github.com/laravel-doctrine/fluent/actions?query=workflow%3ACI+branch%3A1.x)
99

10-
*A fluent mapping driver for Doctrine2*
10+
*A fluent mapping driver for Doctrine3*
1111

1212
```
1313
composer require laravel-doctrine/fluent

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
}
2424
],
2525
"require": {
26-
"php": "^7.2|^8.0",
26+
"php": "^8.1",
2727
"doctrine/dbal": "^2.10|^3.3",
28-
"doctrine/orm": "^2.6",
28+
"doctrine/orm": "^3.1",
2929
"doctrine/inflector": "^1.4|^2.0",
3030
"doctrine/persistence": "^1.3.5|^2.0|^3.0"
3131
},

src/Builders/AbstractBuilder.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Doctrine\ORM\Mapping\ClassMetadata;
77
use Doctrine\ORM\Mapping\DefaultNamingStrategy;
88
use Doctrine\ORM\Mapping\NamingStrategy;
9+
use LaravelDoctrine\Fluent\Extensions\ExtensibleClassMetadata;
910

1011
abstract class AbstractBuilder
1112
{
@@ -38,7 +39,7 @@ public function getBuilder()
3839
}
3940

4041
/**
41-
* @return ClassMetadata
42+
* @return ClassMetadata|ExtensibleClassMetadata
4243
*/
4344
public function getClassMetadata()
4445
{

src/Builders/Entity.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace LaravelDoctrine\Fluent\Builders;
44

5-
use Doctrine\ORM\Mapping\ClassMetadataInfo;
5+
use Doctrine\ORM\Mapping\ClassMetadata;
66
use LaravelDoctrine\Fluent\Builders\Traits\Macroable;
77
use LaravelDoctrine\Fluent\Builders\Traits\Queueable;
88
use LaravelDoctrine\Fluent\Builders\Traits\QueuesMacros;
@@ -42,7 +42,7 @@ public function readOnly()
4242
* Depending on the cache mode selected, you may also need to configure
4343
* lock modes.
4444
*
45-
* @param int $usage Cache mode. use ClassMetadataInfo::CACHE_USAGE_* constants.
45+
* @param int $usage Cache mode. use ClassMetadata::CACHE_USAGE_* constants.
4646
* Defaults to READ_ONLY mode.
4747
* @param string|null $region The cache region to be used. Doctrine will use a default region
4848
* for each entity, if none is provided.
@@ -51,7 +51,7 @@ public function readOnly()
5151
*
5252
* @see http://doctrine-orm.readthedocs.org/en/latest/reference/second-level-cache.html
5353
*/
54-
public function cacheable($usage = ClassMetadataInfo::CACHE_USAGE_READ_ONLY, $region = null)
54+
public function cacheable($usage = ClassMetadata::CACHE_USAGE_READ_ONLY, $region = null)
5555
{
5656
$meta = $this->builder->getClassMetadata();
5757
$meta->enableCache(compact('usage', $region === null ? [] : 'region'));

src/Builders/Field.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
use Doctrine\DBAL\Types\Type;
77
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
88
use Doctrine\ORM\Mapping\Builder\FieldBuilder;
9-
use Doctrine\ORM\Mapping\ClassMetadataInfo;
10-
use Doctrine\Persistence\Mapping\ClassMetadata;
9+
use Doctrine\ORM\Mapping\ClassMetadata;
1110
use LaravelDoctrine\Fluent\Buildable;
1211
use LaravelDoctrine\Fluent\Builders\Traits\Macroable;
1312
use LaravelDoctrine\Fluent\Builders\Traits\Queueable;
@@ -58,7 +57,7 @@ class Field implements Buildable
5857
protected $metaDatabuilder;
5958

6059
/**
61-
* @var ClassMetadataInfo
60+
* @var ClassMetadata|ExtensibleClassMetadata
6261
*/
6362
protected $classMetadata;
6463

@@ -94,7 +93,7 @@ protected function __construct(FieldBuilder $fieldBuilder, ClassMetadataBuilder
9493
* @param string $type
9594
* @param string $name
9695
*
97-
* @throws \Doctrine\DBAL\DBALException
96+
* @throws \Doctrine\DBAL\Exception
9897
*
9998
* @return Field
10099
*/

src/Builders/GeneratedValue.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace LaravelDoctrine\Fluent\Builders;
44

55
use Doctrine\ORM\Mapping\Builder\FieldBuilder;
6-
use Doctrine\ORM\Mapping\ClassMetadataInfo;
6+
use Doctrine\ORM\Mapping\ClassMetadata;
77
use LaravelDoctrine\Fluent\Buildable;
88

99
class GeneratedValue implements Buildable
@@ -39,15 +39,15 @@ class GeneratedValue implements Buildable
3939
protected $generator;
4040

4141
/**
42-
* @var ClassMetadataInfo
42+
* @var ClassMetadata
4343
*/
4444
protected $classMetadata;
4545

4646
/**
47-
* @param FieldBuilder $builder
48-
* @param ClassMetadataInfo $classMetadata
47+
* @param FieldBuilder $builder
48+
* @param ClassMetadata $classMetadata
4949
*/
50-
public function __construct(FieldBuilder $builder, ClassMetadataInfo $classMetadata)
50+
public function __construct(FieldBuilder $builder, ClassMetadata $classMetadata)
5151
{
5252
$this->builder = $builder;
5353
$this->classMetadata = $classMetadata;

src/Builders/Inheritance/Inheritance.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace LaravelDoctrine\Fluent\Builders\Inheritance;
44

5-
use Doctrine\ORM\Mapping\ClassMetadataInfo;
5+
use Doctrine\ORM\Mapping\ClassMetadata;
66

77
interface Inheritance
88
{
@@ -12,15 +12,15 @@ interface Inheritance
1212
* @link http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html#single-table-inheritance
1313
* Doctine documentation
1414
*/
15-
const SINGLE = ClassMetadataInfo::INHERITANCE_TYPE_SINGLE_TABLE;
15+
const SINGLE = ClassMetadata::INHERITANCE_TYPE_SINGLE_TABLE;
1616

1717
/**
1818
* Set inheritance to joined table mode.
1919
*
2020
* @link http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html#class-table-inheritance
2121
* Doctine documentation
2222
*/
23-
const JOINED = ClassMetadataInfo::INHERITANCE_TYPE_JOINED;
23+
const JOINED = ClassMetadata::INHERITANCE_TYPE_JOINED;
2424

2525
/**
2626
* Add the discriminator column.

src/Builders/Overrides/AssociationOverride.php

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
namespace LaravelDoctrine\Fluent\Builders\Overrides;
44

55
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
6-
use Doctrine\ORM\Mapping\ClassMetadataInfo;
6+
use Doctrine\ORM\Mapping\ClassMetadata;
77
use Doctrine\ORM\Mapping\NamingStrategy;
88
use InvalidArgumentException;
99
use LaravelDoctrine\Fluent\Buildable;
10+
use LaravelDoctrine\Fluent\Relations\AssociationCache;
1011
use LaravelDoctrine\Fluent\Relations\ManyToMany;
1112
use LaravelDoctrine\Fluent\Relations\ManyToOne;
1213
use LaravelDoctrine\Fluent\Relations\Relation;
@@ -37,8 +38,8 @@ class AssociationOverride implements Buildable
3738
* @var array
3839
*/
3940
protected $relations = [
40-
ClassMetadataInfo::MANY_TO_ONE => ManyToOne::class,
41-
ClassMetadataInfo::MANY_TO_MANY => ManyToMany::class,
41+
ClassMetadata::MANY_TO_ONE => ManyToOne::class,
42+
ClassMetadata::MANY_TO_MANY => ManyToMany::class,
4243
];
4344

4445
/**
@@ -95,7 +96,9 @@ public function build()
9596
throw new InvalidArgumentException('The callback should return an instance of '.Relation::class);
9697
}
9798

98-
$association->build();
99+
$association instanceof AssociationCache ?
100+
$association->build($source['targetEntity']) :
101+
$association->build();
99102

100103
$target = $this->convertToMappingArray($builder);
101104

@@ -104,8 +107,8 @@ public function build()
104107
// ManyToMany mappings
105108
if ($this->hasJoinTable($target)) {
106109
$overrideMapping['joinTable'] = $this->mapJoinTable(
107-
$target['joinTable'],
108-
$source['joinTable']
110+
(array) $target['joinTable'],
111+
(array) $source['joinTable']
109112
);
110113
}
111114

@@ -134,7 +137,10 @@ protected function convertToMappingArray(ClassMetadataBuilder $builder)
134137
{
135138
$metadata = $builder->getClassMetadata();
136139

137-
return $metadata->getAssociationMapping($this->name);
140+
$associationMappingArray = (array) $metadata->getAssociationMapping($this->name);
141+
$associationMappingArray['type'] = $metadata->getAssociationMapping($this->name)->type();
142+
143+
return $associationMappingArray;
138144
}
139145

140146
/**
@@ -143,7 +149,7 @@ protected function convertToMappingArray(ClassMetadataBuilder $builder)
143149
protected function newClassMetadataBuilder()
144150
{
145151
return new ClassMetadataBuilder(
146-
new ClassMetadataInfo($this->builder->getClassMetadata()->name)
152+
new ClassMetadata($this->builder->getClassMetadata()->name)
147153
);
148154
}
149155

@@ -205,7 +211,7 @@ protected function mapJoinColumns(array $target = [], array $source = [])
205211
$joinColumns = [];
206212
foreach ($target as $index => $joinColumn) {
207213
if (isset($source[$index])) {
208-
$diff = array_diff($joinColumn, $source[$index]);
214+
$diff = array_diff((array) $joinColumn, (array) $source[$index]);
209215

210216
if (!empty($diff)) {
211217
$joinColumns[] = $diff;

src/Builders/Overrides/AttributeOverride.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace LaravelDoctrine\Fluent\Builders\Overrides;
44

55
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
6-
use Doctrine\ORM\Mapping\ClassMetadataInfo;
6+
use Doctrine\ORM\Mapping\ClassMetadata;
77
use Doctrine\ORM\Mapping\NamingStrategy;
88
use InvalidArgumentException;
99
use LaravelDoctrine\Fluent\Buildable;
@@ -116,7 +116,7 @@ protected function convertToMappingArray(ClassMetadataBuilder $builder)
116116
{
117117
$metadata = $builder->getClassMetadata();
118118

119-
return $metadata->getFieldMapping($this->name);
119+
return (array) $metadata->getFieldMapping($this->name);
120120
}
121121

122122
/**
@@ -125,7 +125,7 @@ protected function convertToMappingArray(ClassMetadataBuilder $builder)
125125
protected function newClassMetadataBuilder()
126126
{
127127
return new ClassMetadataBuilder(
128-
new ClassMetadataInfo($this->builder->getClassMetadata()->name)
128+
new ClassMetadata($this->builder->getClassMetadata()->name)
129129
);
130130
}
131131

src/Builders/Table.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function __construct(ClassMetadataBuilder $builder, $name = null)
3939
*/
4040
public function setName($name)
4141
{
42-
$this->builder->setTable($name);
42+
$this->getClassMetadata()->setPrimaryTable(['name' => $name]);
4343

4444
return $this;
4545
}

0 commit comments

Comments
 (0)