vendor\project-biz\database-bundle\src\Database\Criteria\CriteriaUnmappedColumn.php line 41

Open in your IDE?
  1. <?php
  2. namespace ProjectBiz\DatabaseBundle\Database\Criteria;
  3. use Doctrine\DBAL\Query\QueryBuilder;
  4. use ProjectBiz\DatabaseBundle\Database\Column;
  5. class CriteriaUnmappedColumn implements CriteriaBuilderInterface\JsonSerializable
  6. {
  7.     private $columnName;
  8.     public function __construct($columnName$tableName null)
  9.     {
  10.         $this->columnName $columnName;
  11.         $this->tableName $tableName;
  12.     }
  13.     public function buildCriteria(QueryBuilder $builder, array $columnMap$processedView$mt_name 'mt')
  14.     {
  15.         $parts explode(':'$this->columnName);
  16.         $numParts count($parts);
  17.         switch ($numParts) {
  18.             case 1:
  19.                 $column = new Column($this->columnName'view'$this->tableName ?? $mt_name);
  20.                 return $column->getSelectName();
  21.             case 2:
  22.                 $sourceColumnObj = new Column($parts[1], 'view'$columnMap[$parts[0]]['table']);
  23.                 return $columnMap[$parts[0]]['table'] . '.' $sourceColumnObj->getSelectName();
  24.         }
  25.     }
  26.     /**
  27.      * (PHP 5 &gt;= 5.4.0)<br/>
  28.      * Specify data which should be serialized to JSON
  29.      * @link http://php.net/manual/en/jsonserializable.jsonserialize.php
  30.      * @return mixed data which can be serialized by <b>json_encode</b>,
  31.      * which is a value of any type other than a resource.
  32.      */
  33.     public function jsonSerialize()
  34.     {
  35.         return [
  36.             'type'        => 'unmapped_column',
  37.             'column_name' => $this->columnName
  38.         ];
  39.     }
  40. }