#そもそもMVCとは?
MVCはModel
、View
、Controller
の頭文字をとったもの。
大まかに言うとこれら3役がそれぞれ役割を担っていて、アプリケーションを作っていく上での考え方や概念といった基盤になる。
ここにデータベースやルーティングが絡んできて、アプリケーションの動きによってサイクルができる。
#なぜMVCを考えなければいけない?
アプリケーションが簡単なうちはどこがどうなっているのかは把握できるかもしれないが、どんどん複雑になっていく上でその管理が難しくなってくる。
そこでMVCという考え方を持っていればそれぞれが役割を担っているためどこに何があるか把握ができ、状態の管理がしやすくなる。
#Model
既存のデータベースをいじれるメソッドを色々持っている。ビジネスロジックと呼ばれるかも。
ここで書くコードとして、データベース上のどのカラムをいじれるかの設定や、データベースのテーブル同士でリレーションをつけたりする。
//いじれるカラム名を指定する、$fillableではなく$guardedを使っていじれないカラムを指定する方法もある。
protected $fillable = [
'column1',
'column2',
];
//このモデルに付随するテーブルの1要素が、
//Exampleモデルに付随するテーブルの複数要素と関係性をもつことを表している。
//他にも$this->belongsToにしてこのテーブルは指定したテーブルの1要素と関係性をもつことを表すこともできる。
public function examples()
{
return $this->hasMany('\App\Example');
}
#Controller
Model
とView
の間に立つものと考える。
ここではモデルをuse
してモデルのメソッドを使ってデータベースから取得したデータをView
に渡したり、View
から入力された値に対してバリデーションをつけたりすることができる。
また、モデルのメソッドを使って新たにデータベースのテーブルに値を追加することもできる。
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
から受け取ったデータを画面に表示する。
//foreachを使ってコントローラで取得したデータのタイトルを表す。
<div>
@foreach($examples as $example)
<div>
{{ $example->$title }}
</div>
@endforeach
</div>
#まとめ
MVC
について簡単にまとめました。
Laravelをもっと深く理解したいです。。