Sqlserverと接続してデータを抽出します。接続の確認のみです。
MySQLとの接続確認とほぼ同じです。プロジェクトをコピーして微修正でも動きます。
mySQLとSqlserverの違いは環境部分のみとなります。
Contents
環境
DBデータ
Sqlserverのデータベースjmtydbに下記のようなデータが入っているとします。
テーブル名JmtyTable
(この名前がmySQLの例と異なります。mySQLのテーブル名はjmotyTablejmotyです。 mの後にoを入れてしまいました。。。)
接続設定
config\database.php
C:\var\www\ecblue\sqlsrv\config\database.php
1 |
'default' => env('DB_CONNECTION', 'sqlsrv'), |
デフォルトは’mysql’です。Sqlserverの場合はここを’sqlsrv’にします
.env
DBへの接続情報を記述します。
この例ではSqlserverは同じマシンに存在してません。
1 2 3 4 5 6 |
DB_CONNECTION=sqlsrv DB_HOST=192.168.1.6 DB_PORT=1433 DB_DATABASE=jmtydb DB_USERNAME=taro DB_PASSWORD=p@ssw0rd |
プログラミング
モデル
データの処理オブジェクトクラスを作成します。
C:\var\www\ecblue\sqlsrv>php artisan make:model Models/jmtyTable
C:\var\www\ecblue\blog\app\Models
Modelsという名のフォルダへjmtyTable.phpが作成されます。
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class jmtyTable extends Model { // } |
これを変えます。
jmtyTableクラスはjmtyTableテーブルのデータの取得を行うオブジェクトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; class jmtytable extends Model { protected $table = 'jmtytable'; protected $guarded = array('id'); public $timestamps = false; public function getData() { $data = DB::table($this->table)->get(); return $data; } } |
ルーティング
C:\var\www\ecblue\sqlsrv\routesのweb.phpにルーティングを記述します。
Route::get(‘sample/JmtyTable’, ‘JmtyTableController@model’);
sample/JmtyTableにアクセスした時振る舞い記述してます。
コントローラ
1 2 |
C:\var\www\ecblue\sqlsrv>php artisan make:controller jmtyController Controller created successfully. |
C:\var\www\ecblue\sqlsrv\app\Http\ControllersにjmtyController.phpが作成されますので、メソッドを加えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php namespace App\Http\Controllers; //use Illuminate\Http\Request; use App\Models\jmtyTable; class jmtyController extends Controller { public function model() { // jmtyTableモデルのインスタンス化 $md = new jmtyTable(); // データ取得 $data = $md->getData(); // ビューを返す return view('sample.JmtyTable', ['data' => $data]); } |
ビュー
C:\var\www\ecblue\sqlsrv\resources\views\sampleにJmtyTable.blade.phpを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>model sample</title> </head> <body> <ul> @foreach($data as $d) <li>{{$d->name}} / {{$d->message}}</li> @endforeach </ul> </body> </html> |
出力
DBと繋がり、データの取得ができました。
参考元