sql >> データベース >  >> RDS >> Mysql

Laravel 4で列名を取得するにはどうすればよいですか?

    新しい回答

    当時、私はこの回答をしましたLaravelにはこれを直接行う方法がありませんでした 、しかし今は次のことができます:

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

    古い答え

    属性の使用は機能しません。使用する場合

    $model = new ModelName;
    

    そのモデルに属性が設定されておらず、何も取得されません。

    それでも実際の選択肢はないので、データベースレベルに移動する必要があり、これが私の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;
        }
    
    }
    

    次のように使用します:

    $model = User::find(1);
    
    dd( $model->getAllColumnsNames() );
    


    1. 複数のパラメーター化された変数をC#のデータベースに追加する

    2. 条件内の2つのフィールド/列を比較するにはどうすればよいですか?

    3. oraclesqlスクリプトスプールファイルの作成方法

    4. SQLServerのSelectステートメントでNull値を不明に置き換える方法-SQLServer/TSQLチュートリアルパート111