Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

CakePHP 3.5 Luôn áp dụng hàm asText () MySQL cho trường Không gian

AFAIK không có chức năng như vậy, nhập các lớp và chọn nội dung mệnh đề không bao giờ đụng đến.

Nếu bạn muốn áp dụng điều này cho tất cả các tìm kiếm, thì bạn có thể sử dụng Model.beforeFind() chẳng hạn sự kiện, xem qua select mệnh đề và biến đổi các trường thành biểu thức. Đây là một ví dụ nhanh và dễ hiểu, trong đó field là tên của POLYGON loại cột:

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

Bạn có thể phải tính đến $field cũng như các biểu thức, trong trường hợp trường có thể được sử dụng trong một và cũng cần được chuyển đổi ở đó.

Một cách khác là chuyển đổi dữ liệu ở cấp độ PHP trong lớp kiểu 'toPHP() , như đã được chỉ ra trong ví dụ mã của bạn.

Xem thêm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể SSH tới MySQL bằng các công cụ GUI không?

  2. Cách hạn chế giá trị cột trong SQLite / MySQL

  3. Chuyển đổi Mysqli sang PDO

  4. Tôi nên giới hạn bao nhiêu truy vấn MySQL trên một trang? PHP / MySQL

  5. Tôi muốn chuyển đổi một truy vấn MySQL thành PDO?