Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để lấy tên cột trong Laravel 4?

Câu trả lời mới

Vào thời điểm tôi đưa ra câu trả lời này, Laravel không có cách nào để làm điều này trực tiếp , nhưng bây giờ bạn có thể chỉ:

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

Câu trả lời cũ

Việc sử dụng các thuộc tính sẽ không hoạt động vì nếu bạn làm như vậy

$model = new ModelName;

Bạn không có thuộc tính nào được đặt cho mô hình đó và bạn sẽ không nhận được gì.

Sau đó, vẫn không có tùy chọn thực sự nào cho điều đó, vì vậy tôi phải đi xuống cấp cơ sở dữ liệu và đây là BaseModel của tôi:

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

}

Sử dụng nó để làm:

$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. Trường MySQL đơn với các giá trị được phân tách bằng dấu phẩy

  2. Sao lưu và khôi phục MySQL từ dòng lệnh

  3. Cách sử dụng chỉ mục hiệu quả trong truy vấn mysql

  4. Cách nhanh nhất để nhập tệp CSV lớn vào MySql bằng MySql CLI

  5. Cách CHÈN nếu hàng không tồn tại (UPSERT) trong MySQL