Mysql
 sql >> база данни >  >> RDS >> Mysql

Модел на Laravel с POINT/POLYGON и т.н., използвайки DB::raw изрази

Вече решихме това общо за всички модели, като разширихме нашия базов модел със следната функционалност:

  • Ние дефинираме масив от атрибути, които съдържат геометрични данни.
  • Решаваме база за всеки модел, ако искаме това да се зарежда автоматично като текст.
  • Променяме конструктора на заявки по подразбиране, за да изберем геометричните атрибути като текст от базата данни.

Ето откъс от базовия модел, който сега използваме:

/**
 * 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. Всеки начин за постигане на пълнотекстово търсене в InnoDB

  2. jQuery Validator Plugin - проверете за съществуващо потребителско име/имейл в базата данни на mysql

  3. MySQL group_concat_max_len в заявка

  4. Как да накарам MySQL Connector/J да работи на android?

  5. Mysql MySQL или PHP Преобразувайте редовете в две колони динамично