db.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php namespace Laravel;
  2. class DB {
  3. /**
  4. * The established database connections.
  5. *
  6. * @var array
  7. */
  8. public static $connections = array();
  9. /**
  10. * Get a database connection. If no database name is specified, the default
  11. * connection will be returned as defined in the db configuration file.
  12. *
  13. * Note: Database connections are managed as singletons.
  14. *
  15. * <code>
  16. * // Get the default database connection
  17. * $connection = DB::connection();
  18. *
  19. * // Get a specific database connection
  20. * $connection = DB::connection('mysql');
  21. * </code>
  22. *
  23. * @param string $connection
  24. * @return DB\Connection
  25. */
  26. public static function connection($connection = null)
  27. {
  28. if (is_null($connection)) $connection = Config::get('db.default');
  29. if ( ! array_key_exists($connection, static::$connections))
  30. {
  31. if (is_null($config = Config::get('db.connections.'.$connection)))
  32. {
  33. throw new \Exception("Database connection [$connection] is not defined.");
  34. }
  35. $connector = DB\Connector\Factory::make($config);
  36. static::$connections[$connection] = new DB\Connection($connection, $config, $connector);
  37. }
  38. return static::$connections[$connection];
  39. }
  40. /**
  41. * Begin a fluent query against a table.
  42. *
  43. * This method primarily serves as a short-cut to the $connection->table() method.
  44. *
  45. * <code>
  46. * // Begin a fluent query against the "users" table
  47. * $query = DB::table('users');
  48. *
  49. * // Equivalent call using the connection table method.
  50. * $query = DB::connection()->table('users');
  51. *
  52. * // Begin a fluent query against the "users" table for a specific connection
  53. * $query = DB::table('users', 'mysql');
  54. * </code>
  55. *
  56. * @param string $table
  57. * @param string $connection
  58. * @return DB\Query
  59. */
  60. public static function table($table, $connection = null)
  61. {
  62. return static::connection($connection)->table($table);
  63. }
  64. /**
  65. * Magic Method for calling methods on the default database connection.
  66. *
  67. * This provides a convenient API for querying or examining the default database connection.
  68. *
  69. * <code>
  70. * // Run a query against the default database connection
  71. * $results = DB::query('select * from users');
  72. *
  73. * // Equivalent call using the connection instance
  74. * $results = DB::connection()->query('select * from users');
  75. * </code>
  76. */
  77. public static function __callStatic($method, $parameters)
  78. {
  79. return call_user_func_array(array(static::connection(), $method), $parameters);
  80. }
  81. }