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です。(しかしとんでもない量のデータが入ってくるもんですね。)
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です。