1. 読み取り/書き込み接続
場合によっては、あるデータベース接続を SELECT ステートメントに使用し、別のデータベース接続を挿入、更新、および削除ステートメントに使用したい場合があります。 Laravel を使用するとこれが簡単になり、生のクエリ、クエリ ビルダー、または Eloquent ORM を使用するかどうかに関係なく、常に正しい接続が使用されます。
読み取り/書き込み接続をどのように設定する必要があるか、次の例を見てみましょう:
'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')
読み取りと書き込みという 2 つのキーが設定配列に追加されることに注意してください。どちらのキーにも、ホストという 1 つのキーを含む配列値があります。メインの mysql 接続からの残りの読み取りおよび書き込みデータベース オプションは、マージされた配列になります。したがって、メイン配列の値を上書きしたい場合は、読み取り配列と書き込み配列に項目を入れるだけで済みます。したがって、この場合、192.168.1.1 は「読み取り」接続として使用され、192.168.1.2 は「書き込み」接続として使用されます。メインの mysql 配列内のデータベース資格情報、プレフィックス、文字セット、およびその他すべてのオプションは、両方の接続間で共有されます。
2. クエリを実行します
データベース接続を構成したら、DB 実行クエリ クラスを使用できるようになります。
選択クエリを実行する
$results = DB::select('select * from users where id = ?', array(1));
結果の選択メソッドは常に配列を返します。
Insert ステートメントを実行する
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
Update ステートメントを実行する
DB::update('update users set votes = 100 where name = ?', array('John'));
Delete ステートメントを実行する
DB::delete('delete from users');
注: update ステートメントと delete ステートメントによって返される行の数は、操作に影響します。
一般的なステートメントを実行する
DB::statement('drop table users');
イベント リスナーをクエリする
DB::listening メソッドを使用してイベント リスナーをクエリすることができます:
DB::listen(function($sql, $bindings, $time){ //});
3. データベース トランザクション
データベース トランザクションで一連の操作を実行するには、以下を使用できます。トランザクション メソッド :
DB::transaction(function(){ DB::table('users')->update(array('votes' => 1)); DB::table('posts')->delete();});
注: トランザクションのシャットダウン中にスローされた例外により、自動トランザクションがロールバックされます
場合によっては、トランザクションを開始する必要がある場合があります :
DB::beginTransaction();
ロールバック メソッド :
DB::rollback();
最後に、 commit メソッドを通じてトランザクションを送信できます:
DB::commit();
4. 接続にアクセスします
複数の接続を使用する場合、DB::connection メソッドを通じてアクセスできます:
$users = DB::connection('foo')->select(...);
元の接続にもアクセスできます、基礎となる PDO インスタンス:
$pdo = DB::connection()->getPdo();
特定のデータベースに再接続する必要がある場合があります:
DB::reconnect('foo');
基礎となる PDO インスタンスの smax_connections 制限を超える特定のデータベースから切断する必要がある場合は、切断メソッドを使用します:
DB::disconnect('foo');
5. クエリログ
デフォルトでは、Laravel は現在のリクエストを実行しているすべてのクエリをメモリに記録します。ただし、多数の行を挿入する場合など、場合によっては、アプリケーションが過剰なメモリを使用する可能性があります。ログを無効にするには、disableQueryLog メソッドを使用できます:
DB::connection()->disableQueryLog();
o 実行されたクエリのセットを取得するには、getQueryLog メソッドを使用できます:
$queries = DB::getQueryLog();
PHP 開発フレームワーク Laravel データベース操作方法まとめ関連記事の詳細は、ご注目くださいPHP中国語ウェブサイトへ!