ホームページ > バックエンド開発 > PHPチュートリアル > [ Laravel 5.2 ドキュメント ] データベース -- はじめに

[ Laravel 5.2 ドキュメント ] データベース -- はじめに

WBOY
リリース: 2016-06-23 13:19:40
オリジナル
876 人が閲覧しました

1. はじめに

Laravel を使用すると、ネイティブ SQL、クエリ ビルダー、または Eloquent ORM のいずれを使用しても、複数のデータベースに接続してデータベースにクエリを実行することが非常に簡単になります。現在、Laravel は 4 種類のデータベース システムをサポートしています:

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

構成

Laravel を使用すると、データベースへの接続とクエリの実行が非常に簡単になります。アプリケーションのデータベース設定は config/database.php にあります。このファイルでは、すべてのデータベース接続を定義し、どの接続がデフォルトの接続であるかを指定できます。このファイルには、サポートされているすべてのデータベース システムの構成例が記載されています。

デフォルトでは、Laravel サンプル環境構成が Laravel Homestead 用にセットアップされています。もちろん、必要に応じてローカル データベースの構成を変更することもできます。

読み取り/書き込み接続

ネイティブ SQL を使用しているかクエリ ビルダーを使用しているかに関係なく、あるデータベース接続を使用してクエリを実行し、別のデータベース接続を使用して挿入、更新、削除を実行したい場合があります。 Eloquent ORM では、適切な接続が常に使用されます。

読み取り/書き込み接続を構成する方法を知るために、次の例を見てみましょう:

'mysql' => [    'read' => [        'host' => '192.168.1.1',    ],    'write' => [        '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 が「書き込み」接続として使用されます。 2 つのデータベース接続の資格情報 (ユーザー名/パスワード)、プレフィックス、文字セット、およびその他の構成は、mysql 配列内の設定を共有します。

2. ネイティブ SQL クエリを実行する

データベース接続を構成した後、DB ファサードを使用してクエリを実行できます。 DB ファサードは、各クエリに対応するメソッド (選択、更新、挿入、削除、ステートメント) を提供します。

選択クエリを実行する

基本的なクエリを実行するには、DB ファサードの select メソッドを使用できます:

<?phpnamespace App\Http\Controllers;use DB;use App\Http\Controllers\Controller;class UserController extends Controller{    /**     * 显示用户列表     *     * @return Response     */    public function index()    {        $users = DB::select('select * from users where active = ?', [1]);        return view('user.index', ['users' => $users]);    }}
ログイン後にコピー

select メソッドに渡される最初のパラメータはネイティブ SQL ステートメントであり、2 番目のパラメータはネイティブ SQL ステートメントにバインドする必要があります通常、これらは where 句制約の値です。パラメーター バインディングにより、SQL インジェクション攻撃を回避できます。

select メソッドは、配列の形式で結果セットを返します。配列内の各結果は PHP StdClass オブジェクトなので、次のように結果値にアクセスできます。

foreach ($users as $user) {    echo $user->name;}
ログイン後にコピー

名前付きバインディングを使用する

? プレースホルダー パラメーター バインディングを表すことに加えて、名前付きバインディングを使用してクエリを実行することもできます。 select と同様に、modified メソッドはネイティブ SQL ステートメントを最初のパラメーターとして受け取り、バインディングを 2 番目のパラメーターとして受け取ります。

$results = DB::select('select * from users where id = :id', ['id' => 1]);
ログイン後にコピー

update ステートメントを実行します

update メソッドは、データベース内の既存のレコードを更新するために使用されます。このメソッドは、更新されたものを返します。ステートメントによって影響を受ける行の数:

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
ログイン後にコピー

delete ステートメントを実行します

delete メソッドは、update と同様に、削除された行の数を返します:

$affected = DB::update('update users set votes = 100 where name = ?', ['John']);
ログイン後にコピー

一般的なステートメントを実行します

一部のデータベース このタイプの操作では、DB ファサードのステートメント メソッドを使用できます。

$deleted = DB::delete('delete from users');
ログイン後にコピー

クエリ イベントをリッスンします

このメソッドはクエリのロギングとデバッグに非常に便利で、サービス プロバイダーにクエリ リスナーを登録できます。

DB::statement('drop table users');
ログイン後にコピー

3. 一連の操作を実行する場合は、データベース トランザクションでは、DB ファサードのトランザクション メソッドを使用できます。トランザクション クロージャで例外がスローされた場合、トランザクションは自動的にロールバックされます。クロージャが正常に実行されると、トランザクションは自動的にコミットされます。トランザクション メソッドを使用する場合、手動のロールバックやコミットについて心配する必要はありません。

<?phpnamespace App\Providers;use DB;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{    /**     * 启动所有应用服务     *     * @return void     */    public function boot()    {        DB::listen(function($sql, $bindings, $time) {            //        });    }    /**     * 注册服务提供者     *     * @return void     */    public function register()    {        //    }}
ログイン後にコピー

トランザクションを手動で使用する

トランザクションを手動で開始し、ロールバックとコミットを完全に制御したい場合は、次の beginTransaction メソッドを使用できます。 DB ファサード:
DB::transaction(function () {    DB::table('users')->update(['votes' => 1]);    DB::table('posts')->delete();});
ログイン後にコピー

rollBack メソッドを使用してトランザクションをロールバックできます:

DB::beginTransaction();
ログイン後にコピー

最後に、commit メソッドを使用してトランザクションをコミットできます:

DB::rollBack();
ログイン後にコピー

注: DB ファサードを使用したトランザクション メソッドは、次の目的にも使用できます。クエリビルダーとEloquent ORMのトランザクションを制御します。

4. 複数のデータベース接続を使用する

複数のデータベース接続を使用する場合、DB ファサードの接続メソッドを使用して各接続にアクセスできます。接続メソッドに渡される接続名は、構成ファイル config/database.php 内の対応する接続​​に対応します:

DB::commit();
ログイン後にコピー

インスタンスの getPdo メソッドを通じて、基になるネイティブ PDO インスタンスに接続することもできます:

$users = DB::connection('foo')->select(...);
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート