Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mendapatkan nama kolom di Laravel 4?

Jawaban Baru

Pada saat saya memberikan jawaban ini Laravel tidak memiliki cara untuk melakukan ini secara langsung , tetapi sekarang Anda hanya dapat:

$columns = Schema::getColumnListing('users');

Jawaban Lama

Menggunakan atribut tidak akan berhasil karena jika Anda melakukannya

$model = new ModelName;

Anda tidak memiliki atribut yang disetel ke model itu dan Anda tidak akan mendapatkan apa-apa.

Kemudian masih belum ada opsi nyata untuk itu, jadi saya harus turun ke level basis data dan ini adalah BaseModel saya:

<?php

class BaseModel extends \Eloquent {

    public function getAllColumnsNames()
    {
        switch (DB::connection()->getConfig('driver')) {
            case 'pgsql':
                $query = "SELECT column_name FROM information_schema.columns WHERE table_name = '".$this->table."'";
                $column_name = 'column_name';
                $reverse = true;
                break;

            case 'mysql':
                $query = 'SHOW COLUMNS FROM '.$this->table;
                $column_name = 'Field';
                $reverse = false;
                break;

            case 'sqlsrv':
                $parts = explode('.', $this->table);
                $num = (count($parts) - 1);
                $table = $parts[$num];
                $query = "SELECT column_name FROM ".DB::connection()->getConfig('database').".INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'".$table."'";
                $column_name = 'column_name';
                $reverse = false;
                break;

            default: 
                $error = 'Database driver not supported: '.DB::connection()->getConfig('driver');
                throw new Exception($error);
                break;
        }

        $columns = array();

        foreach(DB::select($query) as $column)
        {
            $columns[] = $column->$column_name;
        }

        if($reverse)
        {
            $columns = array_reverse($columns);
        }

        return $columns;
    }

}

Gunakan dengan melakukan:

$model = User::find(1);

dd( $model->getAllColumnsNames() );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql:bagaimana cara menyimpan ORDER BY setelah LEFT JOIN tanpa menyusun ulang?

  2. Cetak data hierarkis dalam bentuk anak induk dari daftar tidak berurutan php?

  3. Permintaan hasil pencarian berbasis lokasi yang lambat

  4. Bagaimana saya bisa menghapus layar di konsol MySQL?

  5. MySQL:GROUP_CONCAT dengan LEFT JOIN