Laravel5でデータベースを使う

データベースでいろいろやる前に

LaravelのDB操作は、いわゆるモデルとかエンティティとか使ってやたらと濃厚に接続する方法と、クエリビルダーを使ってあっさり使う方法があります。前者はEloquentORMを使って、後者はその名の通りクエリビルダーを使ってSQL操作します。
ちゃんとしたアプリケーションを作るのだったらDB周りもちゃんとつくった方がよいでしょう。

データベース接続情報

データベースの接続情報を記述するこの2ファイル。

.env
config/database.php

お好みいろいろあると思いますが、.envに記述した情報をdatabase.phpで使うというのがわかりやすくてよいかと思います。(最初は)
どっちにしろ最終的にはdatabase.phpが設定ファイルなので、ここでちゃんと設定されていたらOKです。

# .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel
DB_PASSWORD=xxxxxxx
....
// config/database.php
'mysql' => [
      'driver' => 'mysql',
      'host' => env('DB_HOST'),
      'port' => env('DB_PORT'),
      'database' => env('DB_DATABASE'),
      'username' => env('DB_USERNAME'),
      'password' => env('DB_PASSWORD'),
      'unix_socket' => env('DB_SOCKET'),
      'charset' => 'utf8',
      'collation' => 'utf8_general_ci',
      'prefix' => '',
      'strict' => true,
      'engine' => null,
],
....

こんな感じで適当な設定をします。

接続テスト

ここではルーティングパラメータをコントローラとビューに渡すのコントローラを使ってみます。

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

class UsersController extends Controller
{
    /**
     * @param  int  $id
     * @return Response
     */ 
    public function page($id)
    {
    $test = DB::connection('mysql');
    var_dump($test);
        return view('users/page')->with('id',$id);
    }
}

/users/xxxxxxxにアクセスしてみると、取得したオブジェクトがダンプされる筈です。これでOKです。(しかしとんでもない量のデータが入ってくるもんですね。)

簡単なselect文を書いてみる

testテーブルを作っておきます。Laravelは規約でidカラムにプライマリキーとおーとインクリメントだった筈なのでidカラムを作っておきましょう。

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

class UsersController extends Controller
{
    /**
     * 指定ユーザーのプロフィール表示
     *
     * @param  int  $id
     * @return Response
     */
    public function page($id)
    {
        $test = DB::connection('mysql');
        $results = DB::select('select * from test_table where id = :id',[ 'id'=> $id ]);
        var_dump($results);
//        echo $id;
        return view('users/page')->with('id',$id);
    }
}

これで配列で一行文のデータがセレクトできればOKです。


Laravel 5.4 データベース:利用開始
Laravel 5.4 Eloquent:利用の開始

Last update: 2017.04.25 (火)