sql >> Databasteknik >  >> RDS >> Mysql

Hur får jag kolumnnamn i Laravel 4?

Nytt svar

När jag gav det här svaret hade Laravel inte ett sätt att göra det här direkt , men nu kan du bara:

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

Gammalt svar

Att använda attribut fungerar inte för om du gör det

$model = new ModelName;

Du har inga attribut inställda på den modellen och du får ingenting.

Sedan finns det fortfarande inget riktigt alternativ för det, så jag var tvungen att gå ner till databasnivån och det här är min BaseModel:

<?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;
    }

}

Använd det för att:

$model = User::find(1);

dd( $model->getAllColumnsNames() );


  1. PHP MySQL Drop Down Box Fyll i valt värde

  2. Återställ en SQL Server 2000-säkerhetskopia på SQL Server 2012

  3. ta bort entiteter i kaskad som inte fungerar i ManyToMany-relationen

  4. Konvertera "datetimeoffset" till "smalldatetime" i SQL Server (T-SQL-exempel)