Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

CakePHP 3.5 Selalu terapkan fungsi asText() MySQL ke bidang Spasial

AFAIK tidak ada fungsi seperti itu, ketik kelas dan pilih konten klausa yang tidak pernah disentuh.

Jika Anda ingin menerapkan ini ke semua temuan, misalnya, Anda dapat menggunakan Model.beforeFind() acara, lintasi select klausa dan mengubah bidang menjadi ekspresi. Berikut adalah contoh cepat dan kotor, di mana field adalah nama dari POLYGON ketik kolom:

// 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']
    );
}

Anda mungkin harus menghitung $field sebagai ekspresi juga, jika bidang mungkin digunakan dalam satu dan perlu dikonversi di sana juga.

Cara lain adalah dengan mengonversi data pada level PHP di kelas tipe ' toPHP() metode, seperti yang telah ditunjukkan dalam contoh kode Anda.

Lihat juga



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ERROR 1093 (HY000):Anda tidak dapat menentukan tabel target 'a' untuk pembaruan dalam klausa FROM

  2. Bagaimana memilih dari teks array mysql dan membandingkan

  3. Cara membuat pernyataan sakelar PHP dinamis dari kueri MySQL

  4. Tidak dapat memperoleh beberapa entitas Tabel melalui prosedur Tersimpan menggunakan hibernasi

  5. apakah lebih baik untuk melarikan diri/mengkodekan input pengguna sebelum menyimpannya ke database atau menyimpannya seperti di database dan menghindarinya saat mengambil?