DateTimeType
. का विस्तार करते हुए एक कस्टम DBAL प्रकार बनाएं और convertToPHPValue
को ओवरराइड करें फ़ंक्शन (मैंने VarDateTimeType
. कॉपी किया है क्लास, जो मेरे Oracle इंस्टॉलेशन द्वारा उपयोग किए जा रहे दिनांक प्रकार को सफलतापूर्वक परिवर्तित नहीं कर सका):
<?php
namespace YourCompany\SomeBundle\Doctrine\DBAL\Types;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\ConversionException;
use Doctrine\DBAL\Types\DateTimeType;
class SillyDateTimeType extends DateTimeType
{
/**
* {@inheritdoc}
* @throws \Doctrine\DBAL\Types\ConversionException
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
if ($value === null || $value instanceof \DateTime) {
return $value;
}
$val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value);
if ( ! $val instanceof \DateTime) {
throw ConversionException::conversionFailed($value, $this->getName());
}
return $val;
}
}
बदलें $val = \DateTime::createFromFormat('d-M-y H.i.s.u A', $value);
उन स्तंभों के लिए आपका इंस्टॉलेशन किसी भी प्रारूप में वापस आ रहा है।
फिर बस इसे dbal
. के तहत रजिस्टर करें config.yml
. में :
# app/config/config.yml
doctrine:
dbal:
types:
sillydatetime: YourCompany\SomeBundle\Doctrine\DBAL\Types\SillyDateTimeType
अब आप sillydatetime
. का उपयोग कर सकते हैं (या जो भी आप इसे कहते हैं) आपके कॉलम प्रकार विनिर्देशों में कहीं भी।