27

データベース テーブル フィールドのデータ型を取得する方法はありますか? これは、移行の逆のようなものです。

たとえば、users テーブル列の移行が次のようになっているとします。

...
$table->integer('age')
...

integertableuserと columnを指定すると返ってくる関数はありますageか?

特定のデータベースの実装には興味がありません ( mysql_field_type())。Laravel の移行と同様に、データベースに依存しない必要があります。

4

9 に答える 9

34

Laravel 4 の場合:

Laravelを掘り下げた後、これが得られました。

DB::connection()->getDoctrineColumn('users', 'age')->getType()->getName()

于 2013-09-01T21:19:44.193 に答える
8

Laravel 5+ (6 および 7 を含む)では、次の方法で db テーブル列のメタデータ (つまり、型、デフォルト値など) を取得できます。

use Illuminate\Support\Facades\Schema;

すべての列について:

 $columns = Schema::getConnection()->getDoctrineSchemaManager()->listTableColumns('table_name');
 $column = Schema::getConnection()->getDoctrineColumn('table_name'', 'column_name'); //For a single column:

getDoctrineSchemaManagerメソッドは、\Doctrine\DBAL\Schema\Columnクラス インスタンスの配列を返します。

getDoctrineColumnメソッドは、\Doctrine\DBAL\Schema\Columnクラスのインスタンスを返します。

\Doctrine\DBAL\Schema\Columnクラスからのいくつかのメソッド:

$column->getName();
$column->getNotnull(); // returns true/false
$column->getDefault(); 
$column->getType(); 
$column->getLength();
于 2020-07-03T05:26:00.483 に答える
4

私はこれをlaravel 4.1で使用しています,,

$schema = \DB::getDoctrineSchemaManager();
$tables = $schema->listTables();

foreach ($tables as $table) {
    echo "<i>".$table->getName() . " </i><b>columns:</b><br>";
    foreach ($table->getColumns() as $column) {
        echo ' - ' . $column->getName() . " - " . $column->getType()->getName() . "<br>";
    }
}

または特定のテーブルを取得するには、これを使用します。$columns = $schema->listTableColumns('user');

于 2013-12-28T16:10:02.817 に答える