1
1

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 5 years have passed since last update.

MVC 概要

Last updated at Posted at 2019-02-27

#そもそも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をもっと深く理解したいです。。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?