MySqlProcessor.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Illuminate\Database\Query\Processors;
  3. class MySqlProcessor extends Processor
  4. {
  5. /**
  6. * Process the results of a columns query.
  7. *
  8. * @param array $results
  9. * @return array
  10. */
  11. public function processColumns($results)
  12. {
  13. return array_map(function ($result) {
  14. $result = (object) $result;
  15. return [
  16. 'name' => $result->name,
  17. 'type_name' => $result->type_name,
  18. 'type' => $result->type,
  19. 'collation' => $result->collation,
  20. 'nullable' => $result->nullable === 'YES',
  21. 'default' => $result->default,
  22. 'auto_increment' => $result->extra === 'auto_increment',
  23. 'comment' => $result->comment ?: null,
  24. 'generation' => $result->expression ? [
  25. 'type' => match ($result->extra) {
  26. 'STORED GENERATED' => 'stored',
  27. 'VIRTUAL GENERATED' => 'virtual',
  28. default => null,
  29. },
  30. 'expression' => $result->expression,
  31. ] : null,
  32. ];
  33. }, $results);
  34. }
  35. /**
  36. * Process the results of an indexes query.
  37. *
  38. * @param array $results
  39. * @return array
  40. */
  41. public function processIndexes($results)
  42. {
  43. return array_map(function ($result) {
  44. $result = (object) $result;
  45. return [
  46. 'name' => $name = strtolower($result->name),
  47. 'columns' => explode(',', $result->columns),
  48. 'type' => strtolower($result->type),
  49. 'unique' => (bool) $result->unique,
  50. 'primary' => $name === 'primary',
  51. ];
  52. }, $results);
  53. }
  54. /**
  55. * Process the results of a foreign keys query.
  56. *
  57. * @param array $results
  58. * @return array
  59. */
  60. public function processForeignKeys($results)
  61. {
  62. return array_map(function ($result) {
  63. $result = (object) $result;
  64. return [
  65. 'name' => $result->name,
  66. 'columns' => explode(',', $result->columns),
  67. 'foreign_schema' => $result->foreign_schema,
  68. 'foreign_table' => $result->foreign_table,
  69. 'foreign_columns' => explode(',', $result->foreign_columns),
  70. 'on_update' => strtolower($result->on_update),
  71. 'on_delete' => strtolower($result->on_delete),
  72. ];
  73. }, $results);
  74. }
  75. }