- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to select all the column names from a table in Laravel?
Here are different ways to get the column names from a table in Laravel.
Assume we have created a table named Students in MySQL database using the following query −
CREATE TABLE students( id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(10) NOT NULL, email VARCHAR(15) NOT NULL, created_at VARCHAR(27) NOT NULL, updated_at VARCHAR(27) NOT NULL, address VARCHAR(3) NOT NULL );
You can get the complete details of it using the DESC command −
mysql> desc students; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(15) | NO | | NULL | | | email | varchar(20) | NO | | NULL | | | created_at | varchar(27) | YES | | NULL | | | updated_at | varchar(27) | YES | | NULL | | | address | varchar(30) | NO | | NULL | | | age | int | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 7 rows in set (0.08 sec)
Using the Schema class
Using schema class, you can create, and update tables in Laravel. To work with the schema class, add the following class to your controller.
use Illuminate\Support\Facades\Schema;
Example
Here is a working example using schema class −
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Schema; class StudentController extends Controller { public function index() { $columns = Schema::getColumnListing('students'); print_r($columns); } }
Output
The output of the above code is as follows.
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
Using the Model class
The Model class in Laravel represents the table in the database. For example, if you have table students, the model name will be student, for users, it will be user, for employees, it will be “employee”. The table name has to be plural and the model name has to be singular. This is a pattern followed, but that does not stop you from using the naming convention of your choice for table name and model name.
Create model for student as shown below -
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Student extends Model { use HasFactory; protected $fillable = ['name','email','address']; }
Now use the model inside your controller to get the column names −
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; class StudentController extends Controller { public function index() { $student = Student::first(); $table_columns = array_keys(json_decode($student, true)); print_r($table_columns); } }
Output
The output of the above code is.
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
Example
You can also make use of the DB facade class as shown inside your controller −
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; class StudentController extends Controller { public function index() { $table = DB::table('students')->get(); $cols = array_keys(json_decode(json_encode($table[0]), true)); print_r($cols); } }
Output
The output of the above code is −
Array ( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
Example
Another way to get columns using DB facade is −
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; class StudentController extends Controller { public function index() { $columns_names = []; $tableDet = DB::select("SHOW COLUMNS FROM students"); foreach($tableDet as $column) { $columns_names[$column->Field] = ''; } print_r($columns_names); } }
Output
The output of the above code is.
Array ( [id] => [name] => [email] => [created_at] => [updated_at] => [address] => )
- Related Articles
- Get all the column names in a table in MongoDB
- How to display the column names from a table excluding some in MySQL?
- How to get all the column names from a ResultSet using JDBC
- How to get all table names from a database using JDBC?
- How to select all the data from a table using MySQL in Python?
- How to select all rows from a table except the last one in MySQL?
- MySQL query to select all the records only from a specific column of a table with multiple columns
- Select column names containing a string in MySQL?
- How to add a new column to an existing table of Laravel in a migration?
- How to remove the row names or column names from a matrix in R?
- How to find the column names and row names from a matrix in R?
- MySQL select distinct dates from datetime column in a table?
- How to select all the characters after the first 20 characters from a column in MySQL?
- How to select all distinct filename extensions from a table of filenames in MySQL?
- How do I select data from one table only where column values from that table match the column values of another table in MySQL?
