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

Mô hình Laravel với POINT / POLYGON, v.v. sử dụng biểu thức DB ::raw

Bây giờ chúng tôi đã giải quyết vấn đề này một cách chung cho tất cả các mô hình bằng cách mở rộng mô hình cơ sở của chúng tôi với chức năng sau:

  • Chúng tôi xác định một mảng các thuộc tính chứa dữ liệu hình học.
  • Chúng tôi quyết định dựa trên từng mô hình nếu chúng tôi muốn điều này được tự động tải dưới dạng văn bản.
  • Chúng tôi thay đổi trình tạo truy vấn mặc định để chọn các thuộc tính hình học dưới dạng văn bản từ cơ sở dữ liệu.

Đây là một đoạn trích từ mô hình cơ sở mà chúng tôi hiện đang sử dụng:

/**
 * The attributes that hold geometrical data.
 *
 * @var array
 */
protected $geometry = array();

/**
 * Select geometrical attributes as text from database.
 *
 * @var bool
 */
protected $geometryAsText = false;

/**
 * Get a new query builder for the model's table.
 * Manipulate in case we need to convert geometrical fields to text.
 *
 * @param  bool  $excludeDeleted
 * @return \Illuminate\Database\Eloquent\Builder
 */
public function newQuery($excludeDeleted = true)
{
    if (!empty($this->geometry) && $this->geometryAsText === true)
    {
        $raw = '';
        foreach ($this->geometry as $column)
        {
            $raw .= 'AsText(`' . $this->table . '`.`' . $column . '`) as `' . $column . '`, ';
        }
        $raw = substr($raw, 0, -2);
        return parent::newQuery($excludeDeleted)->addSelect('*', DB::raw($raw));
    }
    return parent::newQuery($excludeDeleted);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi SQL tôi không thể tìm ra điều này

  2. Làm cách nào để cải thiện Truy vấn MySQL này bằng cách sử dụng phép nối?

  3. Đếm số hàng trong bảng

  4. PHP PDO bindParam () và MySQL BIT

  5. phpMyAdmin trên MySQL 8.0