MVC 概要


そもそもMVCとは?

MVCはModelViewControllerの頭文字をとったもの。
大まかに言うとこれら3役がそれぞれ役割を担っていて、アプリケーションを作っていく上での考え方や概念といった基盤になる。
ここにデータベースやルーティングが絡んできて、アプリケーションの動きによってサイクルができる。

なぜMVCを考えなければいけない?

アプリケーションが簡単なうちはどこがどうなっているのかは把握できるかもしれないが、どんどん複雑になっていく上でその管理が難しくなってくる。
そこでMVCという考え方を持っていればそれぞれが役割を担っているためどこに何があるか把握ができ、状態の管理がしやすくなる。

Model

既存のデータベースをいじれるメソッドを色々持っている。ビジネスロジックと呼ばれるかも。
ここで書くコードとして、データベース上のどのカラムをいじれるかの設定や、データベースのテーブル同士でリレーションをつけたりする。

モデル名.php
//いじれるカラム名を指定する、$fillableではなく$guardedを使っていじれないカラムを指定する方法もある。

protected $fillable = [
    'column1',
    'column2',
];

//このモデルに付随するテーブルの1要素が、
//Exampleモデルに付随するテーブルの複数要素と関係性をもつことを表している。
//他にも$this->belongsToにしてこのテーブルは指定したテーブルの1要素と関係性をもつことを表すこともできる。

public function examples()
{
    return $this->hasMany('\App\Example');
}

Controller

ModelViewの間に立つものと考える。
ここではモデルをuseしてモデルのメソッドを使ってデータベースから取得したデータをViewに渡したり、Viewから入力された値に対してバリデーションをつけたりすることができる。
また、モデルのメソッドを使って新たにデータベースのテーブルに値を追加することもできる。

コントローラ名.php
use App\Example;

//Exampleモデルに付随するテーブルから、作られた時期の降順で取得し、
//view関数を使ってpages.indexファイルに取得したデータを連想配列で渡す。

public function index()
{
    $examples = Example::orderBy('created_at', 'desc')->get();

    return view('pages.index', ['examples' => $examples]);
}

//フォームからの入力を新たにデータベースに追加する関数

public function store(Request $request)
{

//$rulesでバリデーションを指定している。
//'required'は必須項目で、'email'はメール形式を指定してvalidate関数を使う。

    $rules = [
        'example1' => ['required'],
        'example2' => ['requierd', 'email'],
    ];

    $this->validate($request, $rules);

//モデルのcreateメソッドを使ってデータベースに追加する。

    Example::create([
        'example1' => $request['example1'],
        'example2' => $request['example2'],
    ]);

//トップページに遷移する

    return redirect('/');
}

View

Controllerから受け取ったデータを画面に表示する。

ビュー名.blade.php

//foreachを使ってコントローラで取得したデータのタイトルを表す。

<div>
    @foreach($examples as $example)
        <div>
            {{  $example->$title }}
        </div>
    @endforeach
</div>

まとめ

MVCについて簡単にまとめました。
Laravelをもっと深く理解したいです。。