0

データベースにクエリを実行してテーブルをフェッチするlaravel用のスクリプトを作成しようとしていますが、DBクラスを機能させるためにファイルに何を含めればよいかわかりません。

これまでのところ、私のコードは次のようになります。

$tables = DB::query("SHOW TABLES"); foreach ($tables as $table) { print $table . "\n"; }

require "../../vendor/autoload.php" を使用してみましたが、役に立ちません。

したがって、たとえば、コントローラー内で DB クラスを呼び出すと、DB クラスは正常に機能しますが、/application/scripts などのディレクトリを作成してファイル test.php を作成すると機能しません。そのファイルで DB を呼び出そうとすると、DB クラスが定義されていません (正当な理由により)。そのクラスを定義するために、そのファイルに何が必要なのか疑問に思っています。

4

3 に答える 3

3

Illuminate/Databaseパッケージ (Laravel 4 の一部)を使用することをお勧めします。インターフェイスは Laravel フレームワークによって提供される特別なファサードであるため、取得できませんがDB、すべてのクエリ ビルダー機能はカプセルを介して利用できます。

composerilluminate/databaseを使用してインストールし、付属のreadme ノートに従ってください (完全を期すために以下に含まれています)。


データベースを照らす

Laravel 4以外での使用

$config = array(
    'fetch' => PDO::FETCH_CLASS,
    'default' => 'mysql',
    'connections' => array(
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'root',
            'password'  => 'password',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

$capsule = new Illuminate\Database\Capsule($config);

// If you want to use the Eloquent ORM...
$capsule->bootEloquent();

// Making A Query Builder Call...
$capsule->connection()->table('users')->where('id', 1)->first();

// Making A Schema Builder Call...
$capsule->connection()->schema()->create('users', function($t)
{
    $t->increments('id');
    $t->string('email');
    $t->timestamps();
});
于 2013-05-15T21:22:04.517 に答える
1

何も含める必要はありません。Laravel は、必要なものを組み込み、システム自体をセットアップします。$db という変数を使用していますが、それは定義されておらず、何も意味しません。あなたが探しているのはDBクラスです。これを試して:

$tables = DB::query('SHOW TABLES');
foreach ($tables as $table)
{
    echo $table.PHP_EOL;
}

また、Fluent DB クラスのドキュメントを確認してください: http://laravel.com/docs/database/fluent

于 2013-05-15T17:02:20.117 に答える
0

…ですDB::query()ね。データベース エンジンへの呼び出しは、スコープの問題のために、変数ではなくクラスを介して行われます。

于 2013-05-15T16:34:03.853 に答える