2015.6.22
0からはじめるPHP#27【Laravel5で作るデータベース#1-データベースとの接続-】
久しぶりですねこのシリーズ。
掲示板を作る予定でしたが、別のものを作ることになりました。
実はオケの方で、とあるデータベースの設計を頼まれてましてね。
僕も
自分を追い込むためにはいはいと安請け合いしてみましたが、データベースから値を取得して表示、ってのがなかなか上手く行かなくて頓挫していました。
そんな難しいわけではなく、簡単に実装できるはずです。だって、フレームワーク使ってんだもん。でも、何故か上手くいかない。
そこでろんぐさん諦めました。
マニュアル読みます。(爆)
日本人は
説明書を最も見ない民族と呼ばれておりますが、僕もその例外ではありません。
動くサンプルプログラムから学習しよう、という
ラクをしようとする魂胆が丸見えなのですが、誰も簡単なのを書いてくれないのでろんぐさん困っちゃいました^q^
仕方ないので自力でマニュアル読みます。
普通最初にやるだろって感じですけどね。
でも実際のとこ、プログラミングのマニュアルってリファレンスでしかないので、基本的に煩雑で何から始めたらいいかわからないものですし、実際はサンプルプログラムから入るのが正しい・・・・・・と思うんですけどね・・・・・・。(言い訳)
まぁ、Laravelのマニュアルは
基本的に分かりやすい部類だと思うので。
まぁ外部サイトですけど・・・・・・。
もう色々やりすぎてどこがどう必要なのかわけわかんなくなってしまいましたが、とりあえず
マイグレーションは使ってません。
まず、コントローラを作ります。
phpartisan make::controller 名前Controllerですね。
例えばDbという名前でしたらDbControllerってわけですね。確かそんな感じだったと思います。まぁここは躓かんでしょう。
うまく行けばapp/Http/Controllersに同名のファイルができあがります。
Route::get('/', '名前Controller@index');
で、ルートフォルダにこんな感じのを書きます。これでコントローラにアクセスできます。
例えばこの例ですと、public/にアクセスすると、名前Controllerのindexメソッドが呼び出されるわけですね。
URLを変えたかったら"/"の部分を変えればいいです。
例えばhomeなんかに変えると
public/homeでアクセスできるはずです。これで柔軟に対応できます。
use DB;
public function __construct()
{
//$this->middleware('auth');
}
public function index()
{
$users = DB::table('DB名')->get();
foreach ($users as $user)
{
//var_dump($user->title_jp);
}
return view('index',$users);
}
で、データ取得はこんな感じです。
まず大事な点は、第一行ですね。
10行目でDBファサードを使っているのですが
1行目がないと動きません。
で、次は10行目ですね。DBファサードのtableを実行しているようです。
おそらくこれですね。
これを見る限り、Builder型の変数を返しているようです。
で、その後の
->get()の部分で、変数にオブジェクトを代入しているんだと思われます。
この辺は憶測ですけど、当然消すと動かないので、必要なものなのでしょう。
ちなみに、普通の変数には使えないようです。getに関しては調べても出てこないんで今は理解するのを諦めます。
Laravel5で絞って検索しているからだと思うんですけど、仕様変更してたら怖いんですもん・・・・・・。(笑)
で、var_dumpをコメントアウトしていますが、これできちんと変数に値が格納されていることが証明されるわけです。
最後にviewに値を渡していますが
これは正しい書き方なのかどうかは知りません。
とりあえずデータベースから値を全取得できたので、次は全件表示するビューを書こうかと思います。