Home > Article > Backend Development > How to select all column names in a table in Laravel?
Here are the different ways to get column names from a table in Laravel.
Suppose we create a table named Students in a 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 use the DESC command to get its complete details -
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, you can create and update tables in Laravel. To use schema classes, add the following classes to your controller.
use Illuminate\Support\Facades\Schema;
This is a working example using the 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); } }
The output of the above code is as follows.
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
The Model class in Laravel represents the table in the database. For example, if you have student table, the model name will be student, for user, the model name will be user, and for employee, the model name will be "employee". Table names must be plural and model names must be singular. This is the pattern to follow, but this does not prevent you from using a naming convention of your choice for table names and model names.
Create a student model as follows -
<?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 in 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); } }
The output of the above code is.
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
You can also use the database appearance class shown inside the 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); } }
The output of the above code is -
Array ( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
Another way to get columns using a database look and feel 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); } }
The output of the above code is.
Array ( [id] => [name] => [email] => [created_at] => [updated_at] => [address] => )
The above is the detailed content of How to select all column names in a table in Laravel?. For more information, please follow other related articles on the PHP Chinese website!