0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

40 代おっさん LaravelでMVCのMを学ぶ

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

構築環境

・EC2:Amazon Linux2
・PHP7.3
・Laravel 5.8
・mariadb

MVCとは

MVCとは、ソフトウェアの設計モデルの一つで、機能を「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の三つの役割に分離して実装し、それらが連携して処理を進める方式。
Modelはデータの管理や手続きを扱い、Viewは他の二要素からの指示を受けて利用者への表示・出力(の変更)を行い、システムによっては利用者の操作・入力内容をControllerに伝達する。Controllerは利用者からの操作や入力を受け付けて解釈し、ModelやViewに対応する処理を行うようメッセージを発する。

Model

Modelとはデータを管理するところ、データベースの処理を担当する部分

SQLのテーブル作成

laravelにはマイグレーションにてテーブル作成できますが、今回はSQLのクエリを発行してテーブルを作ります。

CREATE TABLE `people` (
    `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
    `name` TEXT NOT NULL,
    `mail` TEXT,
    `age` INTEGER
    );

をSQL開始して打ち込んでください。

show tables;

にて自分の作ったテーブルが確認できれば大丈夫です。

次にダミーレコード入れてください

INSERT INTO `people` VALUES (1,'名前','メールアドレス',年齢);

確認

SELECT id,name,mail,age FROM people;

ORM

ORMとは、データベースのレコードをプログラミング言語のオブジェクトとして扱えるようにする仕組み
LaravelにはEloquentというものがある。

Eloquent

Eloquentではモデルと言うクラスを定義し、これでデータベースを操作する。

モデルの作成

モデルと言うクラスです。勘違いしないで!!

php artisan make:model Person

php artisan make:model モデル名と言う形でコマンドを打ってください。
※モデル名は単数形で、テーブルは複数形で自分はしていなくてえらい目にあいました。

appファルダのProvidersフォルダにPerson.phpが出来ていると思います。

ファイルの中身は

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Person extends Model
{
    //
}

とりあえず作成はできたので後は処理ごとの説明にしたいと思います。

Controllerを作成

php artisan make:controller PersonController
use App\Person;
 public function index(Request $request)
    {
        $items = Person::all();
        return view('person.index', ['items' => $items]);
    }

書き加えてください.
use App\Person;を書き忘れてえらい目にあいました!!

$items = Person::all();で全レコード取得している。

viewを作成

viewsファルダ内にpersonファルダを作成し、そこにindex.blade.phpを作成してください

 <table>
        <tr><th>Name</th><th>Mail</th><th>Age</th></tr>
        @foreach ($items as $item)
            <tr>
                <td>{{$item->name}}</td>
                <td>{{$item->mail}}</td>
                <td>{{$item->age}}</td>
            </tr>
        @endforeach
 </table>

を書いてください。

ルート情報の追加

Route::get('person', 'PersonController@index');

ルート情報を追加

これで基本的な部分は確認ができました。
次はモデルクラスのメソッドで色々やってみたいと思います。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?