MariaDbGrammar.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace Illuminate\Database\Schema\Grammars;
  3. use Illuminate\Database\Connection;
  4. use Illuminate\Database\Schema\Blueprint;
  5. use Illuminate\Support\Fluent;
  6. class MariaDbGrammar extends MySqlGrammar
  7. {
  8. /**
  9. * Compile a rename column command.
  10. *
  11. * @param \Illuminate\Database\Schema\Blueprint $blueprint
  12. * @param \Illuminate\Support\Fluent $command
  13. * @param \Illuminate\Database\Connection $connection
  14. * @return array|string
  15. */
  16. public function compileRenameColumn(Blueprint $blueprint, Fluent $command, Connection $connection)
  17. {
  18. if (version_compare($connection->getServerVersion(), '10.5.2', '<')) {
  19. return $this->compileLegacyRenameColumn($blueprint, $command, $connection);
  20. }
  21. return parent::compileRenameColumn($blueprint, $command, $connection);
  22. }
  23. /**
  24. * Create the column definition for a uuid type.
  25. *
  26. * @param \Illuminate\Support\Fluent $column
  27. * @return string
  28. */
  29. protected function typeUuid(Fluent $column)
  30. {
  31. return 'uuid';
  32. }
  33. /**
  34. * Create the column definition for a spatial Geometry type.
  35. *
  36. * @param \Illuminate\Support\Fluent $column
  37. * @return string
  38. */
  39. protected function typeGeometry(Fluent $column)
  40. {
  41. $subtype = $column->subtype ? strtolower($column->subtype) : null;
  42. if (! in_array($subtype, ['point', 'linestring', 'polygon', 'geometrycollection', 'multipoint', 'multilinestring', 'multipolygon'])) {
  43. $subtype = null;
  44. }
  45. return sprintf('%s%s',
  46. $subtype ?? 'geometry',
  47. $column->srid ? ' ref_system_id='.$column->srid : ''
  48. );
  49. }
  50. }