MySQLと接続してデータを抽出します。接続の確認のみです。
Sqlserverでも同様にできます。こちらを参照下さい。
mySQLとSqlserverの違いは環境部分のみとなります。
Contents
環境
DBデータ
mySQLのデータベースjmtydbに下記のようなデータが入っているとします。
1 2 3 4 5 6 7 8 9 |
mysql> select * from jmotyTable; +----+--------+-------+--------------------+------+ | id | name | price | message | type | +----+--------+-------+--------------------+------+ | 1 | サル | 100 | 魚類ではありません | 1 | | 2 | うさぎ | 200 | 魚類ではありません | 1 | | 3 | りんご | 300 | 果物 | 2 | +----+--------+-------+--------------------+------+ 3 rows in set (0.01 sec) |
テーブル名JmotyTable
(この名前がSqlserverの例と異なります。Sqlserverのテーブル名はjmtyTablejmotyです。 mの後にoが入っていません。。。)
接続設定
config\database.php
C:\var\www\ecblue\mysql\config\database.php
1 |
'default' => env('DB_CONNECTION', 'mysql'), |
‘mysql’です。(デフォルト)Sqlserverの場合は、ここを’sqlsrv’にします
.env
DBへの接続情報を記述します。
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=jmtydb DB_USERNAME=root DB_PASSWORD=p@ssw0rd |
プログラミング
モデル
データの処理オブジェクトクラスを作成します。
C:\var\www\ecblue\mysql>php artisan make:model Models/jmotyTable
C:\var\www\ecblue\blog\app\Models
Modelsという名のフォルダへjmotyTable.phpが作成されます。
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class jmotyTable extends Model { // } |
これを変えます。
jmotyTableクラスはjmotyTableテーブルのデータの取得を行うオブジェクトです。
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 jmotytable extends Model { protected $table = 'jmotytable'; protected $guarded = array('id'); public $timestamps = false; public function getData() { $data = DB::table($this->table)->get(); return $data; } } |
ルーティング
C:\var\www\ecblue\mysql\routesのweb.phpにルーティングを記述します。
Route::get(‘sample/model’, ‘jmotyController@model’);
sample/modelにアクセスした時振る舞い記述してます。
コントローラ
1 2 |
C:\var\www\ecblue\mysql>php artisan make:controller jmotyController Controller created successfully. |
C:\var\www\ecblue\mysql\app\Http\ControllersにjmotyController.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\jmotyTable; class jmotyController extends Controller { public function model() { // jmotyTableモデルのインスタンス化 $md = new jmotyTable(); // データ取得 $data = $md->getData(); // ビューを返す return view('sample.model', ['data' => $data]); } |
ビュー
C:\var\www\ecblue\mysql\resources\views\sampleにmodel.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と繋がり、データの取得ができました。
参考元