MySqlConnection.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace Illuminate\Database;
  3. use Doctrine\DBAL\Driver\PDOMySql\Driver as DoctrineDriver;
  4. use Doctrine\DBAL\Version;
  5. use Illuminate\Database\PDO\MySqlDriver;
  6. use Illuminate\Database\Query\Grammars\MySqlGrammar as QueryGrammar;
  7. use Illuminate\Database\Query\Processors\MySqlProcessor;
  8. use Illuminate\Database\Schema\Grammars\MySqlGrammar as SchemaGrammar;
  9. use Illuminate\Database\Schema\MySqlBuilder;
  10. use Illuminate\Database\Schema\MySqlSchemaState;
  11. use Illuminate\Filesystem\Filesystem;
  12. use PDO;
  13. class MySqlConnection extends Connection
  14. {
  15. /**
  16. * Determine if the connected database is a MariaDB database.
  17. *
  18. * @return bool
  19. */
  20. public function isMaria()
  21. {
  22. return strpos($this->getPdo()->getAttribute(PDO::ATTR_SERVER_VERSION), 'MariaDB') !== false;
  23. }
  24. /**
  25. * Get the default query grammar instance.
  26. *
  27. * @return \Illuminate\Database\Query\Grammars\MySqlGrammar
  28. */
  29. protected function getDefaultQueryGrammar()
  30. {
  31. return $this->withTablePrefix(new QueryGrammar);
  32. }
  33. /**
  34. * Get a schema builder instance for the connection.
  35. *
  36. * @return \Illuminate\Database\Schema\MySqlBuilder
  37. */
  38. public function getSchemaBuilder()
  39. {
  40. if (is_null($this->schemaGrammar)) {
  41. $this->useDefaultSchemaGrammar();
  42. }
  43. return new MySqlBuilder($this);
  44. }
  45. /**
  46. * Get the default schema grammar instance.
  47. *
  48. * @return \Illuminate\Database\Schema\Grammars\MySqlGrammar
  49. */
  50. protected function getDefaultSchemaGrammar()
  51. {
  52. return $this->withTablePrefix(new SchemaGrammar);
  53. }
  54. /**
  55. * Get the schema state for the connection.
  56. *
  57. * @param \Illuminate\Filesystem\Filesystem|null $files
  58. * @param callable|null $processFactory
  59. * @return \Illuminate\Database\Schema\MySqlSchemaState
  60. */
  61. public function getSchemaState(Filesystem $files = null, callable $processFactory = null)
  62. {
  63. return new MySqlSchemaState($this, $files, $processFactory);
  64. }
  65. /**
  66. * Get the default post processor instance.
  67. *
  68. * @return \Illuminate\Database\Query\Processors\MySqlProcessor
  69. */
  70. protected function getDefaultPostProcessor()
  71. {
  72. return new MySqlProcessor;
  73. }
  74. /**
  75. * Get the Doctrine DBAL driver.
  76. *
  77. * @return \Doctrine\DBAL\Driver\PDOMySql\Driver|\Illuminate\Database\PDO\MySqlDriver
  78. */
  79. protected function getDoctrineDriver()
  80. {
  81. return class_exists(Version::class) ? new DoctrineDriver : new MySqlDriver;
  82. }
  83. }