Doctrine2 PostgreSQL tsvector type class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Acme\AcmeBundle\Dbal; | |
use Doctrine\DBAL\Types\Type; | |
use Doctrine\DBAL\Platforms\AbstractPlatform; | |
class TsvectorType extends Type | |
{ | |
public function getName() | |
{ | |
return 'tsvector'; | |
} | |
public function canRequireSQLConversion() | |
{ | |
return true; | |
} | |
public function getSqlDeclaration(array $fieldDeclaration, AbstractPlatform $platform) | |
{ | |
return "TSVECTOR"; | |
} | |
public function convertToPHPValue($value, AbstractPlatform $platform) | |
{ | |
return $value; | |
} | |
public function convertToDatabaseValueSQL($sqlExpr, AbstractPlatform $platform) | |
{ | |
return sprintf('to_tsvector(%s)', $sqlExpr); | |
} | |
public function convertToDatabaseValue($value, AbstractPlatform $platform) | |
{ | |
if (is_array($value)) { | |
$value = implode(" ", $value); | |
} | |
return $value; | |
} | |
} | |
/** Config YML | |
doctrine: | |
dbal: | |
types: | |
tsvector: Acme\AcmeBundle\Dbal\TsvectorType | |
connections: | |
default: | |
mapping_types: | |
tsvector: tsvector | |
**/ | |
// Entity column definition | |
/** | |
* @var array|string $tsv | |
* @ORM\Column(name="tsv", type="tsvector", nullable=true) | |
*/ | |
private $tsv; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment