How to return database table name in Laravel
Stefan Bogdanescu
Founder & Senior Architect · 2026-06-29
Title: Effortlessly Retrieve Database Table Names Using Laravel's Model Functionality
In Laravel, retrieving the current database table name in use by your active model is a straightforward process. This information can be helpful when you need to identify or access specific tables for various purposes such as migrations, data manipulation, or debugging. In this post, we will walk through a comprehensive solution to achieve that goal and elaborate on some best practices to consider.
Access the model's function: You first need to be in your desired Laravel project and ensure you have an active model class under
app/modelsfor which you want to obtain information about its table name. Our code example will use a simple model named User.Check the database connection: The table() function is available within the Database facade, which relies on the configured database connection of your Laravel application. To ensure it's properly set up and ready for usage, take the following steps:
- Navigate to
config/database.php - Check that your desired connection exists and is correctly defined (e.g., 'default' or 'connection_name')
- Ensure you have a database configured and available for use in this connection
- Navigate to
Create the function within the model: Now, we will create a custom function within our User model to retrieve its table name using Laravel's Eloquent model features. First, open your User model file (
app/models/User.php) and add the following code before you define any properties or methods:phpnamespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\DB; class User extends Model { use HasFactory, RefreshDatabase; public function getTableName() { return DB::getConnection()->getDoctrineSchemaManager() ->listTableNames()['users']; } }Break down the code:
- We use
DBto access the Database facade, which provides methods for working with databases and queries in Laravel. - The
getConnection()method returns an instance ofIlluminate\Database\Connections\Connection. This class can then be used to obtain more database-related information such as the current transaction state or any configured connections. - We call the
getDoctrineSchemaManager()method to access the Doctrine Schema Manager, which is responsible for interacting with the schema of your application's database. - Finally, we use the
listTableNames()method from the Schema Manager to obtain an array containing all table names in the current connection. Since our function is concerned only with the User model, we extract its table name by calling the array key 'users'.
- We use
Test your solution: To ensure it works as expected, use the following code in a controller or a unit test:
php// In Controller: $tableName = app(User::class)->getTableName(); dd($tableName); // In Unit Test: $user = App\Models\User::first(); $tableName = $user->getTableName(); dd($tableName); Output: usersCleaning up: With the above setup, you should now be able to access your database table name in Laravel models via your custom function. If you do not require this information anymore, consider removing or commenting out the function definition, ensuring it does not consume unnecessary resources.
In conclusion, retrieving a database table name within a Laravel model is straightforward using the provided code examples and best practices. Always remember to follow proper Laravel conventions, ensure your database connection is configured correctly, maintain good app structure, and, when in doubt, refer back to the Laravel documentation at https://laravelcompany.com/docs for additional guidance. Happy coding!