问题
I am building a new feature onto a Symfony 2.8
application using a few Sonata bundles.
My Page.php
entity definition includes the following mapping:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Equivalent", cascade={"all"})
* @ORM\JoinTable(name="page_equivalent",
* joinColumns={@ORM\JoinColumn(name="page_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="equivalent_id", referencedColumnName="id", unique=true)}
* )
*/
private $equivalents;
... and my PageAdmin.php
file's configureFormFields()
function contains the following:
->add('synonyms', CollectionType::class, array('entry_type' => TextType::class, 'allow_add' => true, 'allow_delete' => true))
->add('equivalents', 'sonata_type_collection', array(
'label' => "Equivalents",
'cascade_validation' => true,
'required' => false,
), array(
'edit' => 'inline',
'inline' => 'table',
'targetEntity' => 'AppBundle\Entity\Equivalent',
'admin_code' => 'app.admin.equivalent',
))
... which yields the message
INVALID MODE : s5a869f19a6c57_equivalents - type : sonata_type_collection - mapping :
I have tried setting by_reference
to both true
and false
, and neither setting seemed to change anything. I have also run doctrine:schema:validate
and spotted no problems. I have also verified that I am able to add and edit Equivalent objects in my CMS.
What can I do to fix this?
回答1:
It turns out that this problem involved an ORM mapping that was not getting read.
(The piece of logic where the complaint lived was checking for one of several ORM mapping types, then complaining if none of those types was found.)
Running app/console doctrine:cache:clear-metadata
and then re-running my doctrine:schema:update --force
command was enough to get my application to recognize the many-to-many relationship that I had been trying to put in place. This got rid of the cranky message.
来源:https://stackoverflow.com/questions/48823406/invalid-mode-s5a869f19a6c57-equivalents-type-sonata-type-collection-mapp