#1228 DDC-3490 -better/more complete exception message for invalid populated associations
This commit is contained in:
parent
5e76f12000
commit
71a6a88de8
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Doctrine\ORM;
|
namespace Doctrine\ORM;
|
||||||
|
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains exception messages for all invalid lifecycle state exceptions inside UnitOfWork
|
* Contains exception messages for all invalid lifecycle state exceptions inside UnitOfWork
|
||||||
@ -195,18 +196,36 @@ class ORMInvalidArgumentException extends \InvalidArgumentException
|
|||||||
*/
|
*/
|
||||||
public static function computeAssociationChangesError($relation, $fieldname, $value)
|
public static function computeAssociationChangesError($relation, $fieldname, $value)
|
||||||
{
|
{
|
||||||
return new self(sprintf('Expected an Object for relation %s::%s got %s instead.', get_class($relation), $fieldname, gettype($value)));
|
return new self(sprintf(
|
||||||
|
'Expected an Object for relation %s::%s got %s instead.',
|
||||||
|
get_class($relation),
|
||||||
|
$fieldname,
|
||||||
|
is_object($value) ? get_class($value) : gettype($value)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Doctrine\ORM\Mapping\ClassMetadata $targetClass
|
* @param ClassMetadata $targetClass
|
||||||
* @param array $assoc
|
* @param array $assoc
|
||||||
* @param mixed $entry
|
* @param mixed $actualValue
|
||||||
|
*
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public static function invalidAssociation($targetClass, $assoc, $entry)
|
public static function invalidAssociation(ClassMetadata $targetClass, $assoc, $actualValue)
|
||||||
{
|
{
|
||||||
return new self(gettype($entry) . (is_scalar($entry) ? ' "'.$entry.'"': '') . ' is not an Object.');
|
$expectedType = 'Doctrine\Common\Collections\Collection|array';
|
||||||
|
|
||||||
|
if (($assoc['type'] & ClassMetadata::TO_ONE) > 0) {
|
||||||
|
$expectedType = $targetClass->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new self(sprintf(
|
||||||
|
'Expected value of type "%s" for association field "%s#$%s", got "%s" instead.',
|
||||||
|
$expectedType,
|
||||||
|
$assoc['sourceEntity'],
|
||||||
|
$assoc['fieldName'],
|
||||||
|
is_object($actualValue) ? get_class($actualValue) : gettype($actualValue)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user