Doctrine embeddables with v2
Closed this issue ยท 8 comments
Tried to upgrade to v2 and a problem arises that it tries to fetch embeddable ID from Doctrine ClassMetadataInfo.
Here is a relevant trace:
Error: Call to a member function getValue() on null
/var/www/html/vendor/doctrine/orm/src/Mapping/ClassMetadataInfo.php:895
/var/www/html/vendor/zenstruck/foundry/src/Proxy.php:446
/var/www/html/vendor/zenstruck/foundry/src/Proxy.php:254
/var/www/html/vendor/zenstruck/foundry/src/Factory.php:519
/var/www/html/vendor/zenstruck/foundry/src/Factory.php:463
/var/www/html/vendor/zenstruck/foundry/src/Factory.php:129
/var/www/html/vendor/zenstruck/foundry/src/Persistence/PersistentProxyObjectFactory.php:77
/var/www/html/vendor/zenstruck/foundry/src/FactoryCollection.php:94
/var/www/html/vendor/zenstruck/foundry/src/Persistence/PersistentProxyObjectFactory.php:101
/var/www/html/tests/ATest.php:279
I use Factory::createSequence
and pass down embeddables
Hi @norkunas
This is kinda strange: in 2.0, src/Proxy.php
does not exist anymore. But in 1.38.0, src/Proxy:446
points to an empty line https://github.com/zenstruck/foundry/blob/1.x/src/Proxy.php#L446
could you provide the exact version you're using please? Also, could you also provide the ORM version?
thanks!
Ugh, sorry, thought that after done all things with upgrade guide I've updated to v2, but no, with v2 now mostly everything is fine, thanks ๐คฆโโ๏ธ
great to read this!
but... you said "mostly"? ๐ don't hesitate to log other annoyance you can encounter!
Just some tests that are failing, but will refactor a little bit to make them work..
What disturbs me that even after I've done everything what I can, I still get these deprecations:
1x: The "Zenstruck\Foundry\ObjectFactory::create()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::find()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::findOrCreate()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::randomOrCreate()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::randomSet()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::randomRange()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::findBy()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::random()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::first()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::last()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::all()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
1x: The "Zenstruck\Foundry\Persistence\PersistentObjectFactory::repository()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Zenstruck\Foundry\Persistence\PersistentProxyObjectFactory".
Why these deprecations are not solved in the library itself? ๐
๐ฎ
which tool triggers these warnings? phpunit / phpstan / phpunit symfony's bridge ?
those are internal problems: we have PersistentProxyObjectFactory
which extends PersistentObjectFactory
, and from a user perspective, we don't want PersistentObjectFactory
to be overridden in user land, so we marked is as @final
. But we need it to be extended by PersistentProxyObjectFactory
.
We do not expect those to bubble up in userland ๐ค
In Symfony I just run SYMFONY_DEPRECATIONS_HELPER='ignoreFile=./tests/baseline-ignore' php bin/phpunit
:) So I will add them to baseline, just want to make sure that it's okay to ignore them :)
We are using phpunit with symfony bridge
ok, thanks for the information. Usually, I'm setting SYMFONY_DEPRECATIONS_HELPER="max[self]=0&max[direct]=0&quiet[]=indirect&quiet[]=other"
so that I'm not annoyed by indirect
and other
deprecations
๐ but I like to be explicit and see a list of deprecations which we ignore :)