13DBからデータを取得する
DBからデータを取得する時もモデルを使います。
取得する方法はとてもシンプルです。
MemoController.phpのshowメソッドに以下のコードを追加しましょう。
public function show()
{
$memo_info = Memo::get(); // 追加
return view('home')
->with('memo_info', $memo_info); // 追加
}注目すべきは$memo_info = Memo::get();です。ここでは、Memoモデルからデータを取得しています。試しに取得した中身を確認してみましょう。
dd($memo_info);を追加して$memo_infoの中身を確認してみましょう。

先ほど追加したメモ情報が格納されています。
では、なぜデータが取れるのでしょうか。
$memo_info = Memo::get();の部分を$memo_info = Memo::*toSql*();に書き換えて画面を再度読み込んでください。

すると上記のようなSQL文が表示されたかなと思います。
toSql()はEloquentORMをSQL文に変換してくれるメソッドです。
Laravel上では$memo_info = Memo::get();となっていますが、実際には”SELECT * FROM ‘memos’”というSQLが発行されています。Memoの部分でメモテーブルにアクセスし、get()がselectの意味になっています。
WHEREやORDER BYなどのメソッドも用意されています。
そして、最後のwith('memo_info', $memo_info)の部分ですがhome.blade.phpに$memo_infoを送りブレードファイル内で$memo_infoという変数で使えるようになります。
試しにブレードファイル内でdd();し確認してみましょう。
home.blade.php
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>メモ帳</title>
<link rel="stylesheet" href="{{ asset('css/style.css') }}">
</head>
<body>
<?php dd($memo_info); ?> // 追加
<div class="container">
<div class="memo_area">MemoController.php
public function show()
{
$memo_info = Memo::get();
return view('home')
->with('memo_info', $memo_info);
}画面を読み込んでみましょう。

ちゃんとブレードファイルで$memo_infoが使えるようになっています。
試しにブレードファイルのdd($memo_info);をdd($data);に変更してみましょう。

当然ですが$dataは定義されていないのでエラーになります。
コントローラのwithをwith(’data’, $memo_info);に変更するとエラーが出力されず、ブレードファイル内で$dataとして$memo_infoを使用することができます。
コメントを残す