Move Mapping Validation into Configuration section
This commit is contained in:
parent
5e9255dda8
commit
71d3f5852d
@ -1136,50 +1136,3 @@ been associated with an EntityManager yet:
|
|||||||
$group = $entityManager->find('Group', $groupId);
|
$group = $entityManager->find('Group', $groupId);
|
||||||
$user = new User();
|
$user = new User();
|
||||||
$user->getGroups()->add($group);
|
$user->getGroups()->add($group);
|
||||||
|
|
||||||
Runtime vs Development Mapping Validation
|
|
||||||
-----------------------------------------
|
|
||||||
|
|
||||||
For performance reasons Doctrine 2 has to skip some of the
|
|
||||||
necessary validation of association mappings. You have to execute
|
|
||||||
this validation in your development workflow to verify the
|
|
||||||
associations are correctly defined.
|
|
||||||
|
|
||||||
You can either use the Doctrine Command Line Tool:
|
|
||||||
|
|
||||||
.. code-block:: php
|
|
||||||
|
|
||||||
doctrine orm:validate-schema
|
|
||||||
|
|
||||||
Or you can trigger the validation manually:
|
|
||||||
|
|
||||||
.. code-block:: php
|
|
||||||
|
|
||||||
<?php
|
|
||||||
use Doctrine\ORM\Tools\SchemaValidator;
|
|
||||||
|
|
||||||
$validator = new SchemaValidator($entityManager);
|
|
||||||
$errors = $validator->validateMapping();
|
|
||||||
|
|
||||||
if (count($errors) > 0) {
|
|
||||||
// Lots of errors!
|
|
||||||
echo implode("\n\n", $errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
If the mapping is invalid the errors array contains a positive
|
|
||||||
number of elements with error messages.
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
One mapping option that is not validated is the use of the referenced column name.
|
|
||||||
It has to point to the equivalent primary key otherwise Doctrine will not work.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
One common error is to use a backlash in front of the
|
|
||||||
fully-qualified class-name. Whenever a FQCN is represented inside a
|
|
||||||
string (such as in your mapping definitions) you have to drop the
|
|
||||||
prefix backslash. PHP does this with ``get_class()`` or Reflection
|
|
||||||
methods for backwards compatibility reasons.
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -581,8 +581,56 @@ In general the required code looks like this:
|
|||||||
|
|
||||||
.. code-block:: php
|
.. code-block:: php
|
||||||
|
|
||||||
|
<?php
|
||||||
$cli = new Application('Doctrine Command Line Interface', \Doctrine\ORM\Version::VERSION);
|
$cli = new Application('Doctrine Command Line Interface', \Doctrine\ORM\Version::VERSION);
|
||||||
$cli->setCatchExceptions(true);
|
$cli->setCatchExceptions(true);
|
||||||
$cli->setHelperSet($helperSet);
|
$cli->setHelperSet($helperSet);
|
||||||
Doctrine\ORM\Tools\Console\ConsoleRunner::addCommands($cli);
|
Doctrine\ORM\Tools\Console\ConsoleRunner::addCommands($cli);
|
||||||
$cli->run();
|
$cli->run();
|
||||||
|
|
||||||
|
Runtime vs Development Mapping Validation
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
For performance reasons Doctrine 2 has to skip some of the
|
||||||
|
necessary validation of metadata mappings. You have to execute
|
||||||
|
this validation in your development workflow to verify the
|
||||||
|
associations are correctly defined.
|
||||||
|
|
||||||
|
You can either use the Doctrine Command Line Tool:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
doctrine orm:validate-schema
|
||||||
|
|
||||||
|
Or you can trigger the validation manually:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
<?php
|
||||||
|
use Doctrine\ORM\Tools\SchemaValidator;
|
||||||
|
|
||||||
|
$validator = new SchemaValidator($entityManager);
|
||||||
|
$errors = $validator->validateMapping();
|
||||||
|
|
||||||
|
if (count($errors) > 0) {
|
||||||
|
// Lots of errors!
|
||||||
|
echo implode("\n\n", $errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
If the mapping is invalid the errors array contains a positive
|
||||||
|
number of elements with error messages.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
One mapping option that is not validated is the use of the referenced column name.
|
||||||
|
It has to point to the equivalent primary key otherwise Doctrine will not work.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
One common error is to use a backlash in front of the
|
||||||
|
fully-qualified class-name. Whenever a FQCN is represented inside a
|
||||||
|
string (such as in your mapping definitions) you have to drop the
|
||||||
|
prefix backslash. PHP does this with ``get_class()`` or Reflection
|
||||||
|
methods for backwards compatibility reasons.
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user