laravel_DBからデータを取得する

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を使用することができます。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です