Mysql
 sql >> Baza danych >  >> RDS >> Mysql

CakePHP 3.5 Zawsze stosuj funkcję MySQL asText() do pola Spatial

AFAIK nie ma takiej funkcjonalności, wpisz klasy i zawartość klauzuli select nigdy nie dotykają.

Jeśli chcesz zastosować to do wszystkich znalezisk, możesz na przykład użyć Model.beforeFind() zdarzenia, przejdź przez select klauzuli i przekształć pola w wyrażenia. Oto szybki i brudny przykład, gdzie field to nazwa POLYGON wpisz kolumnę:

// in the respective table class

use Cake\Event\Event;
use Cake\ORM\Query;

// ...

public function beforeFind(Event $event, Query $query, \ArrayObject $options, $primary)
{
    $query->traverse(
        function (&$value) use ($query) {
            if (empty($value)) {
                $value = $query->aliasFields($this->getSchema()->columns());
            }

            foreach ($value as $key => $field) {
                if (is_string($field) &&
                    $this->aliasField($field) === $this->aliasField('field')
                ) {
                    unset($value[$key]);
                    $value[key($query->aliasField($field))] = $query->func()->AsText([
                        $this->aliasField('field') => 'identifier'
                    ]);
                }
            }
        },
        ['select']
    );
}

Być może będziesz musiał uwzględnić $field również jako wyrażenia, na wypadek gdyby pole mogło być użyte w jednym i również tam musi zostać przekonwertowane.

Innym sposobem byłoby przekonwertowanie danych na poziomie PHP w klasie typu' toPHP() metody, jak już wskazano w twoim przykładzie kodu.

Zobacz także



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL do uzyskania liczby na godzinę

  2. Nie można połączyć się z bazą danych (000webhost)

  3. Dlaczego MySQL działa wolno, gdy używam LIMIT w moim zapytaniu?

  4. Jak uruchomić klaster MySQL lub MariaDB Galera — zaktualizowano

  5. Jak wgrać wiele plików csv do bazy danych mysql za pomocą jsp i serwletu?