sql >> Database teknologi >  >> RDS >> Mysql

Hvordan får jeg kolonnenavne i Laravel 4?

Nyt svar

På det tidspunkt jeg gav dette svar Laravel havde ikke en måde at gøre dette direkte på , men nu kan du bare:

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

Gammelt svar

At bruge attributter virker ikke, fordi hvis du gør det

$model = new ModelName;

Du har ingen attributter indstillet til den model, og du får intet.

Så er der stadig ingen reel mulighed for det, så jeg var nødt til at gå ned til databaseniveauet, og dette er 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;
    }

}

Brug det til at:

$model = User::find(1);

dd( $model->getAllColumnsNames() );


  1. Hvordan opretter man mysql-tabel med kolonnetidsstempel standard nuværende_dato?

  2. Hvordan kan jeg vide, hvornår SQL Full Text Index Population er færdig?

  3. Organiser dit hjemmekontor for øget produktivitet

  4. Hvordan kan jeg bruge SQL's YEAR(), MONTH() og DAY() i Doctrine2?