sql >> Database >  >> RDS >> Mysql

Hoe krijg ik kolomnamen in Laravel 4?

Nieuw antwoord

Op het moment dat ik dit antwoord gaf Laravel had geen manier om dit rechtstreeks te doen , maar nu kun je gewoon:

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

Oud antwoord

Het gebruik van attributen werkt niet, want als je dat doet

$model = new ModelName;

Je hebt geen attributen ingesteld voor dat model en je krijgt niets.

Dan is daar nog steeds geen echte optie voor, dus ik moest naar het databaseniveau en dit is mijn basismodel:

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

}

Gebruik het om:

$model = User::find(1);

dd( $model->getAllColumnsNames() );


  1. dpkg:fout bij verwerking van pakket mysql-server (afhankelijkheidsproblemen)?

  2. Gebruik een trigger om een ​​invoeging of update te stoppen

  3. Installeer icu4c versie 63 met Homebrew

  4. mysql GROUP_CONCAT DISTINCT meerdere kolommen