Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं Laravel 4 में कॉलम नाम कैसे प्राप्त करूं?

नया उत्तर

जिस समय मैंने यह उत्तर दिया था लारवेल के पास इसे सीधे करने का कोई तरीका नहीं था , लेकिन अब आप बस कर सकते हैं:

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

पुराना उत्तर

एट्रिब्यूट का इस्तेमाल करने से काम नहीं चलेगा, क्योंकि अगर आप ऐसा करते हैं

$model = new ModelName;

आपके पास उस मॉडल के लिए कोई विशेषता सेट नहीं है और आपको कुछ भी नहीं मिलेगा।

फिर उसके लिए अभी भी कोई वास्तविक विकल्प नहीं है, इसलिए मुझे डेटाबेस स्तर पर जाना पड़ा और यह मेरा बेसमॉडल है:

<?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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Play Framework का उपयोग करके SSL के माध्यम से दूरस्थ MySQL डेटाबेस से कैसे कनेक्ट करें?

  2. sql jdbc getgeneratedkeys रिटर्न कॉलम आईडी नहीं मिला, कॉलम प्रकार अज्ञात

  3. mysql डेटा के साथ उच्च-निम्न कीमत के आधार पर छँटाई

  4. MySQL - सबसे कम और सबसे बड़ा तुलना ऑपरेटर

  5. कैसे mysql में दो तालिकाओं से डेटा लाने के लिए?